[Trivial] Add tensor dim constructor from array
authorJihoon Lee <jhoon.it.lee@samsung.com>
Fri, 8 Oct 2021 04:37:14 +0000 (13:37 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Fri, 8 Oct 2021 09:30:56 +0000 (18:30 +0900)
This patch adds tensor dim constructor from array

**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>
api/ccapi/include/tensor_dim.h
nntrainer/graph/network_graph.cpp
nntrainer/graph/network_graph.h
nntrainer/tensor/tensor_dim.cpp
packaging/nntrainer.spec

index daefcfe..c779655 100644 (file)
@@ -52,6 +52,13 @@ public:
   TensorDim(std::initializer_list<unsigned int> dims);
 
   /**
+   * @brief Construct a new Tensor Dim object without batch dimension
+   *
+   * @param shapes shapes without batch dimension
+   */
+  TensorDim(const std::array<unsigned int, 3> &shapes);
+
+  /**
    * @brief Construct a new Tensor Dim object
    *
    * @param b batch
index 5cc35f7..35d5e02 100644 (file)
@@ -874,6 +874,7 @@ int NetworkGraph::initialize(
          "one label detected, num labels: "
       << num_label;
 
+    /// @todo implement and use getLabel(0) instead.
     label_list.push_back(node->getOutputGrad(0).getName());
     label_dims.push_back(node->getOutputDimensions()[0]);
   };
@@ -881,7 +882,6 @@ int NetworkGraph::initialize(
   auto identify_external_tensors = [this](const std::vector<std::string> &names,
                                           auto &&pred, auto &&identify) {
     if (names.empty()) {
-      std::vector<nntrainer::TensorDim> old_dims;
       for (unsigned int i = 0; i < graph.size(); ++i) {
         auto lnode = getSortedLayerNode(i).get();
         if (!pred(lnode)) {
index 8f564ed..cd5f3ea 100644 (file)
@@ -256,7 +256,7 @@ public:
    * @param model_input_names model input names if empty list given, all of node
    * that can be inputs will be identified in the sort order
    * @param model_label_names model label names if empty list given, all of node
-   * that can be inputs will be identified in the sort order
+   * that can be labels will be identified in the sort order
    * @return int ML_ERROR_NONE if successful
    */
   int initialize(const std::vector<std::string> &model_input_names = {},
@@ -381,8 +381,9 @@ private:
                                   at the start of the graph */
   bool compiled;               /**< if the model graph is compiled */
   unsigned int batch_size;     /**< current batch_size */
-  // std::vector<Var_Grad *> label_list; /**< var_grads for the labels */
-  // std::vector<Var_Grad *> input_list; /**< var_grads for the inputs */
+
+  /// @note *_list and *_dims must be synced at all times. Consider put it as a
+  /// structure
   std::vector<std::string> label_list; /**< identifier for the model labels */
   std::vector<std::string> input_list; /**< identifier for the model inputs */
   std::vector<TensorDim> label_dims;   /**< graph label dimensions */
index d5e76ef..f7cfd4c 100644 (file)
@@ -51,6 +51,9 @@ TensorDim::TensorDim(std::initializer_list<unsigned int> dims) : TensorDim() {
   }
 }
 
+TensorDim::TensorDim(const std::array<unsigned int, 3> &shapes) :
+  TensorDim({shapes[0], shapes[1], shapes[2]}) {}
+
 TensorDim::TensorDim(unsigned int b, unsigned int c, unsigned int h,
                      unsigned int w, const std::bitset<MAXDIM> &eff_dim_flag_,
                      const std::bitset<MAXDIM> &dyn_dim_flag_) :
index 1177022..fd1bf96 100644 (file)
@@ -464,7 +464,7 @@ cp -r result %{buildroot}%{_datadir}/nntrainer/unittest/
 %{_includedir}/nntrainer/optimizer_impl.h
 %{_libdir}/pkgconfig/nntrainer.pc
 # update this to enable external applications
-# @todo filter out headers that should be hidden
+# @todo filter out headers that should be hidden, and classifiy in the appropriate place if not
 %{_includedir}/nntrainer/util_func.h
 
 %files devel-static