[tfldump] dump inputs and outputs (#2522)
author박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Thu, 6 Dec 2018 01:59:11 +0000 (10:59 +0900)
committer박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Thu, 6 Dec 2018 01:59:11 +0000 (10:59 +0900)
* [tfldump] dump inputs and outputs

This will add part to dump inputs and outputs of the Model

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
* remove local vars

contrib/tfldump/src/Dump.cpp
contrib/tfldump/src/Read.cpp
contrib/tfldump/src/Read.h

index 7046c53..cf9c428 100644 (file)
@@ -204,7 +204,21 @@ void dump_model(std::ostream &os, const tflite::Model *model)
   os << std::endl;
 
   // dump network inputs/outputs
-  os << "Inputs/Outputs:" << std::endl;
+  os << "Inputs/Outputs: I(input)/O(output) T(tensor index) OperandName" << std::endl;
+
+  for (const auto input : reader.inputs())
+  {
+    auto tensor = tensors->Get(input);
+    std::string name = tflread::tensor_name(tensor);
+    os << "I T(" << input << ") " << name << std::endl;
+  }
+
+  for (const auto output : reader.outputs())
+  {
+    auto tensor = tensors->Get(output);
+    std::string name = tflread::tensor_name(tensor);
+    os << "O T(" << output << ") " << name << std::endl;
+  }
 }
 
 } // namespace tfldump
index 5ad43ce..962d7d1 100644 (file)
@@ -137,6 +137,9 @@ bool Reader::select_subgraph(uint32_t sgindex)
   _tensors = nullptr;
   _operators = nullptr;
 
+  _inputs.clear();
+  _outputs.clear();
+
   if (_subgraphs->Length() <= sgindex)
   {
     assert(false);
@@ -148,6 +151,9 @@ bool Reader::select_subgraph(uint32_t sgindex)
   _tensors = subgraph->tensors();
   _operators = subgraph->operators();
 
+  _inputs = as_index_vector(subgraph->inputs());
+  _outputs = as_index_vector(subgraph->outputs());
+
   return true;
 }
 
index 00e0096..3fffcd3 100644 (file)
@@ -63,6 +63,8 @@ public:
   const TFliteBuffers_t *buffers() { return _buffers; }
   const TFliteTensors_t *tensors() { return _tensors; }
   const TFliteOperators_t *operators() { return _operators; }
+  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(); }
 
@@ -80,6 +82,8 @@ private:
   const TFliteOperators_t *_operators;
 
   std::vector<const tflite::OperatorCode *> _op_codes;
+  std::vector<int32_t> _inputs;
+  std::vector<int32_t> _outputs;
 };
 
 } // namespace tflread