ONE - On-device Neural Engine
Loading...
Searching...
No Matches
mio::circle Namespace Reference

Data Structures

class  Reader
 Loads Circle file and provides helpers to access attributes. More...
 

Functions

::circle::BuiltinOperator builtin_code_neutral (const ::circle::OperatorCode *opcode)
 
bool is_valid (const ::circle::OperatorCode *opcode)
 
bool is_custom (const ::circle::OperatorCode *opcode)
 
std::string opcode_name (const ::circle::OperatorCode *opcode)
 
const char * tensor_type (const ::circle::Tensor *tensor)
 
const char * tensor_name (const ::circle::Tensor *tensor)
 
template<typename T >
std::vector< T > as_index_vector (const flatbuffers::Vector< T > *flat_array)
 

Function Documentation

◆ as_index_vector()

template<typename T >
std::vector< T > mio::circle::as_index_vector ( const flatbuffers::Vector< T > *  flat_array)

Definition at line 36 of file Helper.h.

37{
38 if (flat_array == nullptr)
39 {
40 throw std::runtime_error("flat array is nullptr");
41 }
42
43 std::vector<T> ret(flat_array->size());
44 for (uint32_t i = 0; i < flat_array->size(); i++)
45 {
46 ret[i] = flat_array->Get(i);
47 }
48 return ret;
49}
SizeT size() const
Definition vector.h:164
return_type Get(SizeT i) const
Definition vector.h:175

References flatbuffers::Vector< T, SizeT >::Get(), and flatbuffers::Vector< T, SizeT >::size().

Referenced by circledump::dump_sub_graph(), circledump::ReshapePrinter::options(), mio::circle::Reader::outputs(), circleinspect::DumpConv2DWeight::run(), and mio::circle::Reader::select_subgraph().

◆ builtin_code_neutral()

circle::BuiltinOperator mio::circle::builtin_code_neutral ( const ::circle::OperatorCode *  opcode)

This will provide v3/v3a/v3b format neutral BuiltinOperator NOTE circle has minus value opcode (252~254 as uint8_t) we cannot use std::max() like tflite as deprecated_builtin_code can be minus and builtin_code being 0 for v0.3 files.

Definition at line 33 of file Helper.cpp.

34{
35 assert(opcode != nullptr);
36 if (opcode->deprecated_builtin_code() == 127)
37 {
38 assert(opcode->builtin_code() >= 127);
39 return opcode->builtin_code();
40 }
41 // There was no 255(-1) value in v0.3
42 assert(opcode->deprecated_builtin_code() != -1);
43 return static_cast<::circle::BuiltinOperator>(opcode->deprecated_builtin_code());
44}

Referenced by mio::circle::Reader::builtin_code(), circlechef::CircleImport::builtin_code(), luci::CircleReader::builtin_code(), is_custom(), and opcode_name().

◆ is_custom()

bool mio::circle::is_custom ( const ::circle::OperatorCode *  opcode)

Definition at line 64 of file Helper.cpp.

65{
66 ::circle::BuiltinOperator code = builtin_code_neutral(opcode);
67 return (code == ::circle::BuiltinOperator_CUSTOM);
68}
::circle::BuiltinOperator builtin_code_neutral(const ::circle::OperatorCode *opcode)
Definition Helper.cpp:33

References builtin_code_neutral().

Referenced by opcode_name(), and circlechef::CircleImport::opcode_name().

◆ is_valid()

bool mio::circle::is_valid ( const ::circle::OperatorCode *  opcode)

Definition at line 46 of file Helper.cpp.

47{
48 // Valid Range : BuiltinOperator_MIN <= deprecated_builtin_code <= 127
49 const int8_t deprecated_builtin_code = opcode->deprecated_builtin_code();
50 if (deprecated_builtin_code < ::circle::BuiltinOperator_MIN)
51 return false;
52 // There was no 255(-1) value in v0.3
53 if (deprecated_builtin_code == -1)
54 return false;
55
56 const ::circle::BuiltinOperator builtin_code = opcode->builtin_code();
57 if (!(::circle::BuiltinOperator_MIN <= builtin_code &&
58 builtin_code <= ::circle::BuiltinOperator_MAX))
59 return false;
60
61 return true;
62}

Referenced by mio::circle::Reader::opcode_name(), opcode_name(), and circlechef::CircleImport::opcode_name().

◆ opcode_name()

std::string mio::circle::opcode_name ( const ::circle::OperatorCode *  opcode)

Definition at line 70 of file Helper.cpp.

71{
72 assert(opcode);
73
74 if (!is_valid(opcode))
75 {
76 std::ostringstream oss;
77 oss << "(invalid)";
78 return oss.str();
79 }
80
81 if (is_custom(opcode))
82 {
83 if (!opcode->custom_code())
84 return "(invalid custom)";
85
86 std::string custom_op = "CUSTOM(";
87 custom_op += opcode->custom_code()->c_str();
88 custom_op += ")";
89 return custom_op;
90 }
91
92 ::circle::BuiltinOperator code = builtin_code_neutral(opcode);
93 return ::circle::EnumNameBuiltinOperator(code);
94}
bool is_valid(const ::circle::OperatorCode *opcode)
Definition Helper.cpp:46

References builtin_code_neutral(), is_custom(), and is_valid().

Referenced by circledump::dump_model(), mio::circle::Reader::opcode_name(), and luci::CircleReader::opcode_name().

◆ tensor_name()

const char * mio::circle::tensor_name ( const ::circle::Tensor *  tensor)

Definition at line 101 of file Helper.cpp.

102{
103 if (tensor->name() == nullptr || std::string(tensor->name()->c_str()).empty())
104 return "(noname)";
105
106 return tensor->name()->c_str();
107}

Referenced by circledump::dump_sub_graph(), circlechef::generate_recipe(), circlechef::set_inputs(), circlechef::set_outputs(), and mio::circle::Reader::tensor_name().

◆ tensor_type()

const char * mio::circle::tensor_type ( const ::circle::Tensor *  tensor)

Definition at line 96 of file Helper.cpp.

97{
98 return ::circle::EnumNameTensorType(tensor->type());
99}

Referenced by circledump::dump_sub_graph(), and mio::circle::Reader::tensor_dtype().