summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>2020-03-31 13:58:19 +0900
committerGitHub Enterprise <noreply-CODE@samsung.com>2020-03-31 13:58:19 +0900
commitcba8f6faa4d6879317a8e2ecb427e076e6e6ebcd (patch)
tree4029f37561a4c43d963afa5405ded1201789f086
parentc17b45d8593e19a9f33a3c27f474d103a69d8f20 (diff)
downloadnnfw-cba8f6faa4d6879317a8e2ecb427e076e6e6ebcd.tar.gz
nnfw-cba8f6faa4d6879317a8e2ecb427e076e6e6ebcd.tar.bz2
nnfw-cba8f6faa4d6879317a8e2ecb427e076e6e6ebcd.zip
[luci] Export Softmax Op (#10782)
This will enable export of Softmax Op Signed-off-by: SaeHie Park <saehie.park@samsung.com>
-rw-r--r--compiler/luci/export/src/CircleOperationExporter.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/compiler/luci/export/src/CircleOperationExporter.cpp b/compiler/luci/export/src/CircleOperationExporter.cpp
index 48b176594..264ae949d 100644
--- a/compiler/luci/export/src/CircleOperationExporter.cpp
+++ b/compiler/luci/export/src/CircleOperationExporter.cpp
@@ -64,7 +64,7 @@ public:
void visit(luci::CircleRelu6 *) final;
// TODO CircleReshape
void visit(luci::CircleRsqrt *) final;
- // TODO CircleSoftmax
+ void visit(luci::CircleSoftmax *) final;
void visit(luci::CircleSqrt *) final;
void visit(luci::CircleSquaredDifference *) final;
void visit(luci::CircleSub *) final;
@@ -333,7 +333,18 @@ void OperationExporter::visit(luci::CircleRsqrt *node)
gd._operators.push_back(op_offset);
}
-// TODO CircleSoftmax
+void OperationExporter::visit(luci::CircleSoftmax *node)
+{
+ uint32_t op_idx = gd.registerBuiltinOpcode(circle::BuiltinOperator_SOFTMAX);
+ std::vector<int32_t> inputs_vec{get_tensor_index(node->logits())};
+ 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 = CreateSoftmaxOptions(builder, node->beta());
+ auto op_offset = CreateOperator(builder, op_idx, inputs, outputs,
+ circle::BuiltinOptions_SoftmaxOptions, options.Union());
+ gd._operators.push_back(op_offset);
+}
void OperationExporter::visit(luci::CircleSqrt *node)
{