ONE - On-device Neural Engine
Loading...
Searching...
No Matches
Constant.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#include "
Constant.h
"
18
19
#include "
ONNXHelpers.h
"
20
#include "
AttributeHelpers.h
"
21
22
#include "
mir/TensorVariant.h
"
23
#include "
mir/ops/ConstantOp.h
"
24
25
namespace
mir_onnx
26
{
27
28
void
convertConstantV1
(
const
onnx::NodeProto &onnx_node,
ConverterContext
*context)
29
{
30
std::vector<mir::Operation::Output *> inputs = context->
getNodeInputs
(onnx_node);
31
mir::Graph
*graph = context->
getGraph
();
32
33
const
auto
onnx_tensor = getAttributeValue<onnx::TensorProto>(onnx_node,
"value"
);
34
auto
mir_tensor =
createTensor
(&onnx_tensor);
35
36
auto
result = graph->create<
mir::ops::ConstantOp
>(mir_tensor)->getOutput(0);
37
38
context->
setNodeOutputs
(onnx_node, {result});
39
}
40
41
void
convertConstantV9
(
const
onnx::NodeProto &onnx_node,
ConverterContext
*context)
42
{
43
// Since version 9 Constant operation support other types contained in tensor
44
convertConstantV1
(onnx_node, context);
45
}
46
47
void
convertConstantV11
(
const
onnx::NodeProto &onnx_node,
ConverterContext
*context)
48
{
49
const
auto
*value_attr =
findAttribute
(onnx_node,
"value"
);
50
const
auto
*sparse_value_attr =
findAttribute
(onnx_node,
"sparse_value"
);
51
if
(value_attr ==
nullptr
&& sparse_value_attr ==
nullptr
)
52
throw
std::runtime_error(
"Not enough attributes in Constant operation!"
);
53
54
if
(value_attr !=
nullptr
)
55
return
convertConstantV9
(onnx_node, context);
56
57
if
(sparse_value_attr !=
nullptr
)
58
throw
std::runtime_error(
"Not supported sparse_tensor in Constant operation!"
);
59
}
60
61
}
// namespace mir_onnx
AttributeHelpers.h
ConstantOp.h
ONNXHelpers.h
TensorVariant.h
mir::Graph
Definition
Graph.h:35
mir::ops::ConstantOp
Definition
ConstantOp.h:29
mir_onnx::ConverterContext
Definition
ONNXNodeConverterRegistry.h:43
mir_onnx::ConverterContext::setNodeOutputs
void setNodeOutputs(const onnx::NodeProto &onnx_node, const std::vector< mir::Operation::Output * > &outputs)
Definition
ONNXNodeConverterRegistry.cpp:96
mir_onnx::ConverterContext::getNodeInputs
std::vector< mir::Operation::Output * > getNodeInputs(const onnx::NodeProto &onnx_node) const
Definition
ONNXNodeConverterRegistry.cpp:79
mir_onnx::ConverterContext::getGraph
mir::Graph * getGraph() const
Definition
ONNXNodeConverterRegistry.h:53
mir_onnx
Definition
ONNXImporterImpl.h:26
mir_onnx::createTensor
mir::TensorVariant createTensor(const onnx::TensorProto *tensor)
Definition
ONNXHelpers.cpp:106
mir_onnx::convertConstantV9
void convertConstantV9(const onnx::NodeProto &onnx_node, ConverterContext *context)
Definition
Constant.cpp:41
mir_onnx::convertConstantV1
void convertConstantV1(const onnx::NodeProto &onnx_node, ConverterContext *context)
Definition
Constant.cpp:28
mir_onnx::findAttribute
const onnx::AttributeProto * findAttribute(const onnx::NodeProto &node, const std::string &name)
Definition
AttributeHelpers.h:74
mir_onnx::convertConstantV11
void convertConstantV11(const onnx::NodeProto &onnx_node, ConverterContext *context)
Definition
Constant.cpp:47
Constant.h
compiler
mir
src
mir_onnx_importer
Op
Constant.cpp
Generated by
1.9.8