[Identity] Add identity header
authorJihoon Lee <jhoon.it.lee@samsung.com>
Thu, 16 Dec 2021 06:54:25 +0000 (15:54 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Tue, 28 Dec 2021 06:01:41 +0000 (15:01 +0900)
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 <jhoon.it.lee@samsung.com>
nntrainer/layers/identity_layer.h [new file with mode: 0644]
nntrainer/layers/reduce_mean_layer.cpp
nntrainer/layers/reduce_mean_layer.h

diff --git a/nntrainer/layers/identity_layer.h b/nntrainer/layers/identity_layer.h
new file mode 100644 (file)
index 0000000..9624631
--- /dev/null
@@ -0,0 +1,91 @@
+// SPDX-License-Identifier: Apache-2.0
+/**
+ * Copyright (C) 2021 Jihoon Lee <jhoon.it.lee@samsung.com>
+ *
+ * @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 <jhoon.it.lee@samsung.com>
+ * @bug    No known bugs except for NYI items
+ *
+ */
+
+#ifndef __IDENTITY_LAYER_H__
+#define __IDENTITY_LAYER_H__
+#ifdef __cplusplus
+
+#include <layer_devel.h>
+
+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<std::string> &values)
+   */
+  void setProperty(const std::vector<std::string> &values) override;
+
+  inline static const std::string type = "identity";
+};
+} // namespace nntrainer
+
+#endif /* __cplusplus */
+#endif /* __IDENTITY_LAYER_H__ */
index 7710691..235c5d3 100644 (file)
@@ -10,6 +10,7 @@
  * @brief  This is Reduce Mean Layer Class for Neural Network
  */
 
+#include <layer_context.h>
 #include <nntrainer_error.h>
 #include <nntrainer_log.h>
 #include <node_exporter.h>
index 6cb54f7..c457b6e 100644 (file)
 #ifdef __cplusplus
 
 #include <common_properties.h>
-#include <layer_context.h>
 #include <layer_devel.h>
 
 namespace nntrainer {
 
+class RunLayerContext;
+class InitLayerContext;
+
 /**
  * @class   Reduce Mean Layer
  * @brief   Reduce Mean Layer