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
_tensors = nullptr;
_operators = nullptr;
+ _inputs.clear();
+ _outputs.clear();
+
if (_subgraphs->Length() <= sgindex)
{
assert(false);
_tensors = subgraph->tensors();
_operators = subgraph->operators();
+ _inputs = as_index_vector(subgraph->inputs());
+ _outputs = as_index_vector(subgraph->outputs());
+
return true;
}
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(); }
const TFliteOperators_t *_operators;
std::vector<const tflite::OperatorCode *> _op_codes;
+ std::vector<int32_t> _inputs;
+ std::vector<int32_t> _outputs;
};
} // namespace tflread