summaryrefslogtreecommitdiff
path: root/compiler/tfldump/src
diff options
context:
space:
mode:
authorChunseok Lee <chunseok.lee@samsung.com>2021-10-19 11:32:46 +0900
committerChunseok Lee <chunseok.lee@samsung.com>2021-10-19 11:32:46 +0900
commit33ae5d70a1ed85d215c1293ed63afbf3517b07d5 (patch)
tree9f1ace0f4760a8f7903ef15e2e92f1d1401e4b1e /compiler/tfldump/src
parentf4cf19e579a19c5346ccb2aad55bfd251065e447 (diff)
downloadnnfw-33ae5d70a1ed85d215c1293ed63afbf3517b07d5.tar.gz
nnfw-33ae5d70a1ed85d215c1293ed63afbf3517b07d5.tar.bz2
nnfw-33ae5d70a1ed85d215c1293ed63afbf3517b07d5.zip
Diffstat (limited to 'compiler/tfldump/src')
-rw-r--r--compiler/tfldump/src/Dump.cpp38
-rw-r--r--compiler/tfldump/src/Read.cpp19
-rw-r--r--compiler/tfldump/src/Read.h4
3 files changed, 55 insertions, 6 deletions
diff --git a/compiler/tfldump/src/Dump.cpp b/compiler/tfldump/src/Dump.cpp
index 20e1343e6..7a480bc52 100644
--- a/compiler/tfldump/src/Dump.cpp
+++ b/compiler/tfldump/src/Dump.cpp
@@ -350,6 +350,7 @@ void dump_model(std::ostream &os, const tflite::Model *model)
auto opcodes = reader.opcodes();
auto buffers = reader.buffers();
auto metadata = reader.metadata();
+ auto signaturedefs = reader.signaturedefs();
// dump operator_codes
os << "Operator Codes: [order] OpCodeName (OpCode Enum)" << std::endl;
@@ -357,11 +358,13 @@ void dump_model(std::ostream &os, const tflite::Model *model)
for (auto opcode : opcodes)
{
tflite::BuiltinOperator op_code = opcode->builtin_code();
+ tflite::BuiltinOperator dp_code = tflite::BuiltinOperator(opcode->deprecated_builtin_code());
+
auto op_name = tflread::opcode_name(opcode);
auto op_version = opcode->version();
os << "[" << opcode_index << "] " << op_name << " (code: " << op_code
- << ", version: " << op_version << ")" << std::endl;
+ << ", dep_code: " << dp_code << ", version: " << op_version << ")" << std::endl;
opcode_index++;
}
@@ -389,7 +392,38 @@ void dump_model(std::ostream &os, const tflite::Model *model)
os << "metadata : B(index) name" << std::endl;
for (uint32_t i = 0; i < metadata->Length(); ++i)
{
- os << "B(" << metadata->Get(i)->buffer() << ") " << metadata->Get(i)->name()->c_str();
+ os << "B(" << metadata->Get(i)->buffer() << ") " << metadata->Get(i)->name()->c_str()
+ << std::endl;
+ }
+ os << std::endl;
+ }
+
+ // dump signaturedef
+ if (signaturedefs != nullptr)
+ {
+ os << "SignatureDef" << std::endl;
+ for (uint32_t i = 0; i < signaturedefs->Length(); ++i)
+ {
+ auto sign_i = signaturedefs->Get(i);
+ os << "S(" << i << ") " << sign_i->method_name()->c_str() << ", key("
+ << sign_i->key()->c_str() << "), sub_graph(" << sign_i->subgraph_index() << ")"
+ << std::endl;
+
+ auto inputs_i = sign_i->inputs();
+ for (uint32_t t = 0; t < inputs_i->Length(); ++t)
+ {
+ auto inputs_i_t = inputs_i->Get(t);
+ os << " I T(" << t << ") " << inputs_i_t->name()->c_str() << ": "
+ << inputs_i_t->tensor_index() << std::endl;
+ }
+
+ auto outputs_i = sign_i->outputs();
+ for (uint32_t t = 0; t < outputs_i->Length(); ++t)
+ {
+ auto outputs_i_t = outputs_i->Get(t);
+ os << " O T(" << t << ") " << outputs_i_t->name()->c_str() << ": "
+ << outputs_i_t->tensor_index() << std::endl;
+ }
}
os << std::endl;
}
diff --git a/compiler/tfldump/src/Read.cpp b/compiler/tfldump/src/Read.cpp
index 856cc5699..8b3a96e83 100644
--- a/compiler/tfldump/src/Read.cpp
+++ b/compiler/tfldump/src/Read.cpp
@@ -22,15 +22,25 @@
namespace tflread
{
+// This will provide v3/v3a format neutral BuiltinOperator
+tflite::BuiltinOperator builtin_code_neutral(const tflite::OperatorCode *opcode)
+{
+ assert(opcode != nullptr);
+ int8_t dp_code = opcode->deprecated_builtin_code();
+ if (dp_code < 127 && dp_code >= 0)
+ return tflite::BuiltinOperator(dp_code);
+ return opcode->builtin_code();
+}
+
bool is_valid(const tflite::OperatorCode *opcode)
{
- tflite::BuiltinOperator code = opcode->builtin_code();
+ tflite::BuiltinOperator code = builtin_code_neutral(opcode);
return (tflite::BuiltinOperator_MIN <= code && code <= tflite::BuiltinOperator_MAX);
}
bool is_custom(const tflite::OperatorCode *opcode)
{
- tflite::BuiltinOperator code = opcode->builtin_code();
+ tflite::BuiltinOperator code = builtin_code_neutral(opcode);
return (code == tflite::BuiltinOperator_CUSTOM);
}
@@ -56,7 +66,7 @@ std::string opcode_name(const tflite::OperatorCode *opcode)
return custom_op;
}
- tflite::BuiltinOperator code = opcode->builtin_code();
+ tflite::BuiltinOperator code = builtin_code_neutral(opcode);
return tflite::EnumNameBuiltinOperator(code);
}
@@ -82,6 +92,7 @@ Reader::Reader(const tflite::Model *model)
_subgraphs = model->subgraphs();
_buffers = model->buffers();
_metadata = model->metadata();
+ _signaturedefs = model->signature_defs();
auto opcodes = model->operator_codes();
for (const ::tflite::OperatorCode *opcode : *opcodes)
@@ -118,7 +129,7 @@ tflite::BuiltinOperator Reader::builtin_code(const tflite::Operator *op) const
assert(index < _op_codes.size());
const tflite::OperatorCode *opcode = _op_codes.at(index);
- return opcode->builtin_code();
+ return tflread::builtin_code_neutral(opcode);
}
std::string Reader::opcode_name(const tflite::Operator *op) const
diff --git a/compiler/tfldump/src/Read.h b/compiler/tfldump/src/Read.h
index f835be140..80f317d0b 100644
--- a/compiler/tfldump/src/Read.h
+++ b/compiler/tfldump/src/Read.h
@@ -36,6 +36,7 @@ template <typename T> std::vector<T> as_index_vector(const flatbuffers::Vector<T
return ret;
}
+tflite::BuiltinOperator builtin_code_neutral(const tflite::OperatorCode *opcode);
bool is_valid(const tflite::OperatorCode *opcode);
bool is_custom(const tflite::OperatorCode *opcode);
std::string opcode_name(const tflite::OperatorCode *opcode);
@@ -53,6 +54,7 @@ private:
using TFliteTensors_t = flatbuffers::Vector<flatbuffers::Offset<tflite::Tensor>>;
using TFliteOperators_t = flatbuffers::Vector<flatbuffers::Offset<tflite::Operator>>;
using TFliteMetadata_t = flatbuffers::Vector<flatbuffers::Offset<tflite::Metadata>>;
+ using TFliteSignatureDef_t = flatbuffers::Vector<flatbuffers::Offset<tflite::SignatureDef>>;
public:
Reader(const tflite::Model *model);
@@ -69,6 +71,7 @@ public:
const std::vector<int32_t> &inputs() const { return _inputs; }
const std::vector<int32_t> &outputs() const { return _outputs; }
const TFliteMetadata_t *metadata() const { return _metadata; }
+ const TFliteSignatureDef_t *signaturedefs() const { return _signaturedefs; }
uint32_t num_subgraph() const { return _subgraphs->Length(); }
@@ -89,6 +92,7 @@ private:
const TFliteTensors_t *_tensors{nullptr};
const TFliteOperators_t *_operators{nullptr};
const TFliteMetadata_t *_metadata{nullptr};
+ const TFliteSignatureDef_t *_signaturedefs{nullptr};
uint32_t _subgraph_index;
std::string _subgraph_name;