diff options
author | Chunseok Lee <chunseok.lee@samsung.com> | 2021-10-19 11:32:46 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2021-10-19 11:32:46 +0900 |
commit | 33ae5d70a1ed85d215c1293ed63afbf3517b07d5 (patch) | |
tree | 9f1ace0f4760a8f7903ef15e2e92f1d1401e4b1e /compiler/tfldump/src | |
parent | f4cf19e579a19c5346ccb2aad55bfd251065e447 (diff) | |
download | nnfw-33ae5d70a1ed85d215c1293ed63afbf3517b07d5.tar.gz nnfw-33ae5d70a1ed85d215c1293ed63afbf3517b07d5.tar.bz2 nnfw-33ae5d70a1ed85d215c1293ed63afbf3517b07d5.zip |
Imported Upstream version 1.18.0upstream/1.18.0submit/tizen/20211028.014856submit/tizen/20211019.023737accepted/tizen/unified/20211101.140244
Diffstat (limited to 'compiler/tfldump/src')
-rw-r--r-- | compiler/tfldump/src/Dump.cpp | 38 | ||||
-rw-r--r-- | compiler/tfldump/src/Read.cpp | 19 | ||||
-rw-r--r-- | compiler/tfldump/src/Read.h | 4 |
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; |