void exportRelu(loco::ReLU *node, FlatBufferBuilder &builder, SerializedModelData &gd)
{
uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_RELU);
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->input()]};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->input())};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
auto op_offset = CreateOperator(builder, op_idx, inputs, outputs);
void exportMaxPool2D(loco::MaxPool2D *node, FlatBufferBuilder &builder, SerializedModelData &gd)
{
uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_MAX_POOL_2D);
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->ifm()]};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->ifm())};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
tflite::Padding padding = getOpPadding(node->pad());
assert(node->convention() == loco::AvgPool2D::Convention::Valid);
uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_AVERAGE_POOL_2D);
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->ifm()]};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->ifm())};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
tflite::Padding padding = getOpPadding(node->pad());
gd._tensors.push_back(bias_tensor_offset);
// Make input, output and options for operator
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->ifm()],
- gd._node_to_tensor_id[node->ker()], bias_tensor_id};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->ifm()), get_tensor_index(node->ker()),
+ bias_tensor_id};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
tflite::Padding padding = getOpPadding(node->pad());
void exportIdentity(NodeT *node, FlatBufferBuilder &builder, SerializedModelData &gd)
{
uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_CONCATENATION);
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->arg(0)]};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->arg(0))};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
auto options = CreateConcatenationOptions(builder); // use dummy 0 axis and NONE activation
// Create permutation node
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->arg(0)], perm_tensor_id};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[node]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->arg(0)), perm_tensor_id};
+ std::vector<int32_t> outputs_vec{get_tensor_index(node)};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
SerializedModelData &gd)
{
uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_ADD);
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->value()],
- gd._node_to_tensor_id[node->bias()]};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->value()), get_tensor_index(node->bias())};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
auto options = CreateAddOptions(builder); // dummy option
void exportConcat(loco::TensorConcat *node, FlatBufferBuilder &builder, SerializedModelData &gd)
{
uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_CONCATENATION);
- std::vector<int32_t> inputs_vec{gd._node_to_tensor_id[node->lhs()],
- gd._node_to_tensor_id[node->rhs()]};
- std::vector<int32_t> outputs_vec{gd._node_to_tensor_id[static_cast<loco::Node *>(node)]};
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->lhs()), get_tensor_index(node->rhs())};
+ std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
auto inputs = builder.CreateVector(inputs_vec);
auto outputs = builder.CreateVector(outputs_vec);
auto options = CreateConcatenationOptions(builder, node->axis());
}
else if (dynamic_cast<loco::Pull *>(node))
{
- data._inputs.push_back(data._node_to_tensor_id[node]);
+ data._inputs.push_back(get_tensor_index(node));
}
else if (dynamic_cast<loco::Push *>(node))
{
- data._outputs.push_back(data._node_to_tensor_id[node->arg(0)]);
+ data._outputs.push_back(get_tensor_index(node->arg(0)));
}
else if (auto *encode = dynamic_cast<loco::FeatureEncode *>(node))
{