[tflchef] Fix FlatBufferIntArrayToVector (#2369)
author박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Thu, 22 Nov 2018 01:33:51 +0000 (10:33 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Thu, 22 Nov 2018 01:33:51 +0000 (10:33 +0900)
* [tflchef] Fix FlatBufferIntArrayToVector

This will rename FlatBufferIntArrayToVector to as_index_vector like enco/frontend and correct type of caller
- incorrect type may cause a problem in reading minus values in shape info

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
* fix to typename

contrib/tflchef/tflite/src/Convert.h
contrib/tflchef/tflite/src/RecipeChef.cpp
contrib/tflchef/tflite/src/TFliteImport.cpp
contrib/tflchef/tflite/src/TFliteImport.h

index fa7f0da..4973da1 100644 (file)
@@ -28,9 +28,9 @@ tflchef::TensorType as_tflchef_type(const tflite::TensorType type);
 tflchef::Activation as_tflchef_activation(const tflite::ActivationFunctionType type);
 tflchef::Padding as_tflchef_padding(const tflite::Padding padding);
 
-template <class T> std::vector<uint32_t> FlatBufferIntArrayToVector(T *flat_array)
+template <typename T> std::vector<T> as_index_vector(const flatbuffers::Vector<T> *flat_array)
 {
-  std::vector<uint32_t> ret(flat_array->Length());
+  std::vector<T> ret(flat_array->Length());
   for (uint32_t i = 0; i < flat_array->Length(); i++)
   {
     ret[i] = flat_array->Get(i);
index 86b97ba..4c6553f 100644 (file)
@@ -30,7 +30,7 @@ namespace tflchef
 void set_inputs(TFliteImport *import, tflchef::Operation *operation, const tflite::Operator *op)
 {
   auto tensors = import->tensors();
-  const std::vector<uint32_t> &inputs = FlatBufferIntArrayToVector(op->inputs());
+  const std::vector<int32_t> &inputs = as_index_vector(op->inputs());
 
   for (auto input : inputs)
   {
@@ -43,7 +43,7 @@ void set_inputs(TFliteImport *import, tflchef::Operation *operation, const tflit
 void set_outputs(TFliteImport *import, tflchef::Operation *operation, const tflite::Operator *op)
 {
   auto tensors = import->tensors();
-  const std::vector<uint32_t> &outputs = FlatBufferIntArrayToVector(op->outputs());
+  const std::vector<int32_t> &outputs = as_index_vector(op->outputs());
 
   for (auto output : outputs)
   {
@@ -105,7 +105,7 @@ std::unique_ptr<ModelRecipe> generate_recipe(const tflite::Model *model)
     operand->set_name(tensor_name(tensor));
     operand->set_type(as_tflchef_type(tensor->type()));
 
-    std::vector<uint32_t> dims = FlatBufferIntArrayToVector(tensor->shape());
+    std::vector<int32_t> dims = as_index_vector(tensor->shape());
     ::tflchef::TensorShape *shape = operand->mutable_shape();
     for (auto dim : dims)
     {
@@ -145,8 +145,8 @@ std::unique_ptr<ModelRecipe> generate_recipe(const tflite::Model *model)
   }
 
   // network inputs/outputs
-  const std::vector<uint32_t> &inputs = tflite_import.inputs();
-  const std::vector<uint32_t> &outputs = tflite_import.outputs();
+  const std::vector<int32_t> &inputs = tflite_import.inputs();
+  const std::vector<int32_t> &outputs = tflite_import.outputs();
 
   for (const auto input : inputs)
   {
index 2e5ef50..51d9b5f 100644 (file)
@@ -80,8 +80,8 @@ bool TFliteImport::select_sub_graph(uint32_t sgindex)
   _tensors = subgraph->tensors();
   _operators = subgraph->operators();
 
-  _inputs = FlatBufferIntArrayToVector(subgraph->inputs());
-  _outputs = FlatBufferIntArrayToVector(subgraph->outputs());
+  _inputs = as_index_vector(subgraph->inputs());
+  _outputs = as_index_vector(subgraph->outputs());
 
   return true;
 }
index a6ce62f..6d55517 100644 (file)
@@ -54,8 +54,8 @@ public:
   const TFliteBuffers_t *buffers() { return _buffers; }
   const TFliteTensors_t *tensors() { return _tensors; }
   const TFliteOperators_t *operators() { return _operators; }
-  const std::vector<uint32_t> &inputs() const { return _inputs; }
-  const std::vector<uint32_t> &outputs() const { return _outputs; }
+  const std::vector<int32_t> &inputs() const { return _inputs; }
+  const std::vector<int32_t> &outputs() const { return _outputs; }
 
   uint32_t num_subgraph() const { return _subgraphs->Length(); }
 
@@ -89,8 +89,8 @@ private:
   const TFliteOperators_t *_operators;
 
   std::vector<const tflite::OperatorCode *> _op_codes;
-  std::vector<uint32_t> _inputs;
-  std::vector<uint32_t> _outputs;
+  std::vector<int32_t> _inputs;
+  std::vector<int32_t> _outputs;
 
   std::map<uint32_t, bool> _tensor_filler;
 };