LOGI("mInterpreter->tensors_size() :[%zu]",
mInterpreter->tensors_size());
- // input tensor
- std::map<std::string, int>().swap(mInputLayerId);
- const std::vector<int>& inputs = mInterpreter->inputs();
- if (!inputs.empty()) {
- for (auto& input : inputs) {
- mInputLayerId.insert(std::make_pair(mInterpreter->tensor(input)->name, input));
- }
- } else {
- for (auto& layer: mInputLayers) {
- LOGI("mInputLayer list [%s]", layer.first.c_str());
- for (unsigned int idx = 0; idx < mInterpreter->tensors_size();
- ++idx) {
- if (mInterpreter->tensor(idx)->name == NULL)
- continue;
- if ((layer.first).compare(mInterpreter->tensor(idx)->name) == 0) {
- mInputLayerId.insert(std::make_pair(layer.first, idx));
- break;
- }
- }
- }
- }
-
- // output tensor
- std::map<std::string, int>().swap(mOutputLayerId);
- const std::vector<int>& outputs = mInterpreter->outputs();
- if (!outputs.empty()) {
- for (auto& output : outputs) {
- mOutputLayerId.insert(std::make_pair(mInterpreter->tensor(output)->name, output));
- }
- } else {
- for (auto& layer : mOutputLayers) {
- LOGI("mOutputLayer list [%s]", layer.first.c_str());
- for (unsigned int idx = 0; idx < mInterpreter->tensors_size();
- ++idx) {
- if (mInterpreter->tensor(idx)->name == NULL)
- continue;
- if ((layer.first).compare(mInterpreter->tensor(idx)->name) == 0) {
- mOutputLayerId.insert(std::make_pair(layer.first, idx));
- break;
- }
- }
- }
- }
+ FillLayerId(mInputLayerId, mInputLayers, mInterpreter->inputs());
+ FillLayerId(mOutputLayerId, mOutputLayers, mInterpreter->outputs());
if (mInterpreter->AllocateTensors() != kTfLiteOk) {
LOGE("Fail to allocate tensor");
return INFERENCE_ENGINE_ERROR_NONE;
}
+ void InferenceTFLite::FillLayerId(std::map<std::string, int>& layerId,
+ std::map<std::string, inference_engine_tensor_info>& layers,
+ const std::vector<int>& buffer)
+ {
+ layerId.clear();
+
+ if (!buffer.empty()) {
+ for (auto& idx : buffer)
+ layerId.insert(std::make_pair(mInterpreter->tensor(idx)->name, idx));
+ return;
+ }
+
+ for (auto& layer: layers) {
+ LOGI("Layer list [%s]", layer.first.c_str());
+ for (unsigned int idx = 0; idx < mInterpreter->tensors_size(); ++idx) {
+ if (mInterpreter->tensor(idx)->name == NULL)
+ continue;
+ if ((layer.first).compare(mInterpreter->tensor(idx)->name) == 0) {
+ layerId.insert(std::make_pair(layer.first, idx));
+ break;
+ }
+ }
+ }
+ }
+
extern "C"
{
class IInferenceEngineCommon *EngineCommonInit(void)