From: Jihoon Lee Date: Thu, 16 Dec 2021 06:54:25 +0000 (+0900) Subject: [Identity] Add identity header X-Git-Tag: accepted/tizen/unified/20220323.062643~73 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e0b820de746f72dd0f5ea58d43b234c97868e647;p=platform%2Fcore%2Fml%2Fnntrainer.git [Identity] Add identity header This patch add identity layer header. **Self evaluation:** 1. Build test: [X]Passed [ ]Failed [ ]Skipped 2. Run test: [X]Passed [ ]Failed [ ]Skipped Signed-off-by: Jihoon Lee --- diff --git a/nntrainer/layers/identity_layer.h b/nntrainer/layers/identity_layer.h new file mode 100644 index 0000000..9624631 --- /dev/null +++ b/nntrainer/layers/identity_layer.h @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2021 Jihoon Lee + * + * @file identity.h + * @date 16 Dec 2021 + * @brief This is identity layer flows everything as it is + * @see https://github.com/nnstreamer/nntrainer + * @author Jihoon Lee + * @bug No known bugs except for NYI items + * + */ + +#ifndef __IDENTITY_LAYER_H__ +#define __IDENTITY_LAYER_H__ +#ifdef __cplusplus + +#include + +namespace nntrainer { + +/** + * @class Identity Layer + * @note Identity layers takes multiple tensors as input, redirects to output + * without doing nothing (or if unavoidable, copying) + */ +class IdentityLayer final : public Layer { +public: + /** + * @brief Constructor of IdentityLayer + */ + IdentityLayer(); + + /** + * @brief Destructor of IdentityLayer + */ + ~IdentityLayer(); + + /** + * @brief Move constructor of Identity Layer. + * @param rhs target + */ + IdentityLayer(IdentityLayer &&rhs) noexcept = default; + + /** + * @brief Move assignment operator. + * @param rhs IdentityLayer to be moved. + */ + IdentityLayer &operator=(IdentityLayer &&rhs) noexcept = default; + + /** + * @copydoc Layer::finalize(InitLayerContext &context) + */ + void finalize(InitLayerContext &context) override; + + /** + * @copydoc Layer::forwarding(RunLayerContext &context, bool training) + */ + void forwarding(RunLayerContext &context, bool training) override; + + /** + * @copydoc Layer::calcDerivative(RunLayerContext &context) + */ + void calcDerivative(RunLayerContext &context) override; + + /** + * @copydoc bool supportBackwarding() const + */ + bool supportBackwarding() const override { return true; }; + + /** + * @copydoc Layer::supportInPlace() + */ + bool supportInPlace() const override { return true; } + + /** + * @copydoc Layer::getType() + */ + const std::string getType() const override { return IdentityLayer::type; }; + + /** + * @copydoc Layer::setProperty(const std::vector &values) + */ + void setProperty(const std::vector &values) override; + + inline static const std::string type = "identity"; +}; +} // namespace nntrainer + +#endif /* __cplusplus */ +#endif /* __IDENTITY_LAYER_H__ */ diff --git a/nntrainer/layers/reduce_mean_layer.cpp b/nntrainer/layers/reduce_mean_layer.cpp index 7710691..235c5d3 100644 --- a/nntrainer/layers/reduce_mean_layer.cpp +++ b/nntrainer/layers/reduce_mean_layer.cpp @@ -10,6 +10,7 @@ * @brief This is Reduce Mean Layer Class for Neural Network */ +#include #include #include #include diff --git a/nntrainer/layers/reduce_mean_layer.h b/nntrainer/layers/reduce_mean_layer.h index 6cb54f7..c457b6e 100644 --- a/nntrainer/layers/reduce_mean_layer.h +++ b/nntrainer/layers/reduce_mean_layer.h @@ -16,11 +16,13 @@ #ifdef __cplusplus #include -#include #include namespace nntrainer { +class RunLayerContext; +class InitLayerContext; + /** * @class Reduce Mean Layer * @brief Reduce Mean Layer