From: 윤현식/On-Device Lab(SR)/Principal Engineer/삼성전자 Date: Tue, 30 Apr 2019 00:07:35 +0000 (+0900) Subject: [nnkit/moco/tf] TensorContext class (#3387) X-Git-Tag: nncc_backup~652 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef32cc1135ae36ce841191ab2d1f14e719ef50ee;p=platform%2Fcore%2Fml%2Fnnfw.git [nnkit/moco/tf] TensorContext class (#3387) This commit adds TensorContext class, which will be inherited by InputTensorContext and OutputTensorContext in next PR. Signed-off-by: Hyun Sik Yoon --- diff --git a/contrib/nnkit/libs/support/moco/tf/src/TensorContext.h b/contrib/nnkit/libs/support/moco/tf/src/TensorContext.h new file mode 100644 index 0000000..2793396 --- /dev/null +++ b/contrib/nnkit/libs/support/moco/tf/src/TensorContext.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NNKIT_SUPPORT_MOCO_TF_TENSOR_CONTEXT_H__ +#define __NNKIT_SUPPORT_MOCO_TF_TENSOR_CONTEXT_H__ + +#include "nnkit/TensorContext.h" +#include "nnkit/support/tftestinfo/ParsedTensor.h" + +#include + +#include +#include + +namespace nnkit +{ +namespace support +{ +namespace moco +{ +namespace tf +{ + +using nnkit::support::tftestinfo::ParsedTensor; + +/** + * @brief Parent class of InputTensorContext and OutputTensorContext + */ +class TensorContext : public nnkit::TensorContext +{ +public: + TensorContext(const std::vector> &tensors) : _tensors(tensors) + { + // empty + } + + TensorContext(const TensorContext &) = delete; + TensorContext(TensorContext &&) = delete; + +public: + uint32_t size(void) const override { return _tensors.size(); } + +public: + std::string name(uint32_t n) const override // name with ":0", ":1", etc + { + return _tensors.at(n)->name(); + } + +public: + nncc::core::ADT::tensor::Shape shape(uint32_t n) const override + { + return _tensors.at(n)->shape(); + } + +public: + // Float (fp32) tensor support + bool isFloatTensor(uint32_t n) const override { return _tensors.at(n)->isFloatTensor(); } + + virtual void getMutableFloatTensor(uint32_t n, + const nnkit::TensorContext::TypedAccessor &f) = 0; + virtual void getConstFloatTensor(uint32_t n, + const nnkit::TensorContext::TypedReader &f) const = 0; + +private: + const std::vector> &_tensors; +}; + +} // namespace tf +} // namespace moco +} // namespace support +} // namespace nnkit + +#endif // __NNKIT_SUPPORT_MOCO_TF_TENSOR_CONTEXT_H__