ONE - On-device Neural Engine
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
w
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
Enumerations
a
b
c
d
e
f
i
k
l
m
n
o
p
q
r
s
t
u
Enumerator
a
b
c
d
e
f
g
i
k
l
m
n
o
p
r
s
u
v
w
y
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Enumerations
a
c
d
e
f
g
i
k
l
m
o
p
r
s
t
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Related Symbols
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
u
v
w
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
Variables
_
b
c
d
f
g
i
k
m
n
o
p
s
t
v
Typedefs
a
d
f
g
i
l
m
n
o
s
t
u
v
Enumerations
f
g
n
o
p
r
Enumerator
a
k
n
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
Examples
▼
ONE - On-device Neural Engine
How to Add a New Operation
How to Build Compiler
How to Build Package
How to Build Runtime with GBS for Tizen/RPi4
How to Build Using Prebuilt Docker Image
How to Build Runtime
How to Contribute
How to Cross-build Runtime for AARCH64
How to Cross-build Runtime for Android
How to Cross-build Runtime for ARM
How To Introduce a New Operation Into Compiler
How To Introduce a New Operation Into Runtime
How to Make an Application with Runtime
How to Remote Debugging with Visual Studio Code
How to Run Package
How to Use API
How to Use NNAPI Binding
How to Use NNFW API
How to Use NNFW PYTHON API
How to Use Specific Backend during Inference
Background
Overall Architecture
Roadmap
Supported Operations
Workgroup
API
Backend API
Compute
Controlflow Operations
Core
Executors
Heterogeneous Execution
On-Device Compilation
Supported Operations and backend
Training
Training a simple CNN model on MNIST using ONERT
Training MobileNetV2 on ImageNet Dataset using ONERT
Transfer Learning
►
Topics
►
Namespaces
►
Data Structures
▼
Files
►
File List
►
Globals
►
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
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
}
28
void
convertConstantV1
(
const
onnx::NodeProto &onnx_node,
ConverterContext
*context) {
…
}
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
}
41
void
convertConstantV9
(
const
onnx::NodeProto &onnx_node,
ConverterContext
*context) {
…
}
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
}
47
void
convertConstantV11
(
const
onnx::NodeProto &onnx_node,
ConverterContext
*context) {
…
}
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