Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
MIGraphX
Commits
a8989ece
Commit
a8989ece
authored
Apr 14, 2022
by
Shucai Xiao
Browse files
clang format
parent
d7a28300
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1340 additions
and
1475 deletions
+1340
-1475
test/onnx/gen_onnx.py
test/onnx/gen_onnx.py
+1340
-1475
No files found.
test/onnx/gen_onnx.py
View file @
a8989ece
...
...
@@ -11,16 +11,17 @@ def onnx_test(op_test):
def
run_test
():
op_info
=
op_test
()
if
len
(
op_info
)
>
3
:
graph_def
=
helper
.
make_graph
(
op_info
[
0
],
op_test
.
__name__
,
op_info
[
1
],
op_info
[
2
],
initializer
=
op_info
[
3
])
graph_def
=
helper
.
make_graph
(
op_info
[
0
],
op_test
.
__name__
,
op_info
[
1
],
op_info
[
2
],
initializer
=
op_info
[
3
])
else
:
graph_def
=
helper
.
make_graph
(
op_info
[
0
],
op_test
.
__name__
,
op_info
[
1
],
op_info
[
2
])
model_def
=
helper
.
make_model
(
graph_def
,
producer_name
=
op_test
.
__name__
)
model_def
=
helper
.
make_model
(
graph_def
,
producer_name
=
op_test
.
__name__
)
onnx
.
save
(
model_def
,
'{}.onnx'
.
format
(
op_test
.
__name__
))
return
run_test
...
...
@@ -60,11 +61,8 @@ def add_bcast_test():
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
z
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
,
5
])
node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'0'
,
'1'
],
broadcast
=
1
,
axis
=
1
,
outputs
=
[
'2'
])
node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'0'
,
'1'
],
broadcast
=
1
,
axis
=
1
,
outputs
=
[
'2'
])
return
([
node
],
[
x
,
y
],
[
z
])
...
...
@@ -108,11 +106,8 @@ def argmax_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
6
])
node
=
onnx
.
helper
.
make_node
(
'ArgMax'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
2
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ArgMax'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
2
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -122,11 +117,8 @@ def argmin_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
])
node
=
onnx
.
helper
.
make_node
(
'ArgMin'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
3
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ArgMin'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
3
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -192,10 +184,8 @@ def averagepool_1d_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
5
])
out
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
3
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
kernel_shape
=
[
3
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
kernel_shape
=
[
3
])
return
([
node
],
[
x
],
[
out
])
...
...
@@ -206,10 +196,8 @@ def averagepool_3d_test():
out
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
3
,
3
,
3
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
kernel_shape
=
[
3
,
3
,
3
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
kernel_shape
=
[
3
,
3
,
3
])
return
([
node
],
[
x
],
[
out
])
...
...
@@ -219,13 +207,14 @@ def averagepool_notset_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
6
,
6
],
strides
=
[
2
,
2
],
pads
=
[
0
,
0
,
1
,
1
],
auto_pad
=
'NOTSET'
)
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
6
,
6
],
strides
=
[
2
,
2
],
pads
=
[
0
,
0
,
1
,
1
],
auto_pad
=
'NOTSET'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -235,14 +224,15 @@ def averagepool_nt_cip_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
6
,
6
],
strides
=
[
2
,
2
],
pads
=
[
0
,
0
,
1
,
1
],
auto_pad
=
'NOTSET'
,
count_include_pad
=
1
)
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
6
,
6
],
strides
=
[
2
,
2
],
pads
=
[
0
,
0
,
1
,
1
],
auto_pad
=
'NOTSET'
,
count_include_pad
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -252,11 +242,12 @@ def averagepool_same_lower_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_LOWER'
)
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_LOWER'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -266,12 +257,13 @@ def averagepool_sl_cip_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_LOWER'
,
count_include_pad
=
1
)
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_LOWER'
,
count_include_pad
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -281,11 +273,12 @@ def averagepool_same_upper_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_UPPER'
)
node
=
onnx
.
helper
.
make_node
(
'AveragePool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_UPPER'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -299,11 +292,12 @@ def batchnorm_1d_test():
var
=
helper
.
make_tensor_value_info
(
'4'
,
TensorProto
.
FLOAT
,
[
3
])
out
=
helper
.
make_tensor_value_info
(
'5'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
5
])
node
=
onnx
.
helper
.
make_node
(
'BatchNormalization'
,
inputs
=
[
'0'
,
'1'
,
'2'
,
'3'
,
'4'
],
outputs
=
[
'5'
],
epsilon
=
1e-6
,
momentum
=
0.9
)
node
=
onnx
.
helper
.
make_node
(
'BatchNormalization'
,
inputs
=
[
'0'
,
'1'
,
'2'
,
'3'
,
'4'
],
outputs
=
[
'5'
],
epsilon
=
1e-6
,
momentum
=
0.9
)
return
([
node
],
[
x
,
scale
,
bias
,
mean
,
var
],
[
out
])
...
...
@@ -318,11 +312,12 @@ def batchnorm_3d_test():
out
=
helper
.
make_tensor_value_info
(
'5'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
5
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'BatchNormalization'
,
inputs
=
[
'0'
,
'1'
,
'2'
,
'3'
,
'4'
],
outputs
=
[
'5'
],
epsilon
=
1e-6
,
momentum
=
0.9
)
node
=
onnx
.
helper
.
make_node
(
'BatchNormalization'
,
inputs
=
[
'0'
,
'1'
,
'2'
,
'3'
,
'4'
],
outputs
=
[
'5'
],
epsilon
=
1e-6
,
momentum
=
0.9
)
return
([
node
],
[
x
,
scale
,
bias
,
mean
,
var
],
[
out
])
...
...
@@ -356,10 +351,8 @@ def celu_alpha_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
])
node
=
onnx
.
helper
.
make_node
(
'Celu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.8
)
node
=
onnx
.
helper
.
make_node
(
'Celu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.8
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -379,10 +372,8 @@ def celu_verify_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'Celu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.5
)
node
=
onnx
.
helper
.
make_node
(
'Celu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.5
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -402,10 +393,8 @@ def celu_zero_alpha_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'Celu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.0
)
node
=
onnx
.
helper
.
make_node
(
'Celu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -415,11 +404,8 @@ def clip_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
3
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
3
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
max
=
6.0
,
min
=
0.0
)
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
max
=
6.0
,
min
=
0.0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -432,9 +418,8 @@ def clip_test_op11():
min_val
=
helper
.
make_tensor
(
'min'
,
TensorProto
.
FLOAT
,
[],
[
0.0
])
max_val
=
helper
.
make_tensor
(
'max'
,
TensorProto
.
FLOAT
,
[],
[
6.0
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
,
'min'
,
'max'
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
,
'min'
,
'max'
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
],
[
min_val
,
max_val
])
...
...
@@ -446,9 +431,8 @@ def clip_test_op11_max_only():
max_val
=
helper
.
make_tensor
(
'max'
,
TensorProto
.
FLOAT
,
[],
[
0.0
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
,
''
,
'max'
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
,
''
,
'max'
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
],
[
max_val
])
...
...
@@ -494,9 +478,8 @@ def clip_test_args_type_mismatch():
[
1.5
,
2.5
,
3.5
])
max_val
=
helper
.
make_tensor
(
'max'
,
TensorProto
.
INT64
,
[
3
,
1
],
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
,
'min'
,
'max'
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Clip'
,
inputs
=
[
'0'
,
'min'
,
'max'
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
],
[
min_val
,
max_val
])
...
...
@@ -559,10 +542,11 @@ def constant_fill_input_as_shape_test():
np_shape
=
np
.
array
([
2
,
3
])
value
=
helper
.
make_tensor_value_info
(
'value'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
ts_shape
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
np_shape
.
shape
,
vals
=
np_shape
.
flatten
().
astype
(
int
))
ts_shape
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
np_shape
.
shape
,
vals
=
np_shape
.
flatten
().
astype
(
int
))
const_shape_node
=
onnx
.
helper
.
make_node
(
'Constant'
,
...
...
@@ -608,10 +592,11 @@ def const_of_shape_empty_input_test():
tensor_val
=
onnx
.
helper
.
make_tensor
(
'value'
,
onnx
.
TensorProto
.
INT64
,
[
1
],
[
10
])
empty_val
=
np
.
array
([]).
astype
(
np
.
int64
)
empty_ts
=
helper
.
make_tensor
(
name
=
'empty_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
empty_val
.
shape
,
vals
=
empty_val
.
flatten
().
astype
(
int
))
empty_ts
=
helper
.
make_tensor
(
name
=
'empty_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
empty_val
.
shape
,
vals
=
empty_val
.
flatten
().
astype
(
int
))
shape_const
=
helper
.
make_node
(
'Constant'
,
inputs
=
[],
...
...
@@ -636,10 +621,11 @@ def const_of_shape_float_test():
[
10
])
shape_val
=
np
.
array
([
2
,
3
,
4
]).
astype
(
np
.
int64
)
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_const
=
helper
.
make_node
(
'Constant'
,
...
...
@@ -649,10 +635,8 @@ def const_of_shape_float_test():
)
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'ConstantOfShape'
,
inputs
=
[
'shape'
],
outputs
=
[
'y'
],
value
=
tensor_val
)
node
=
onnx
.
helper
.
make_node
(
'ConstantOfShape'
,
inputs
=
[
'shape'
],
outputs
=
[
'y'
],
value
=
tensor_val
)
return
([
shape_const
,
node
],
[],
[
y
])
...
...
@@ -662,10 +646,11 @@ def const_of_shape_int64_test():
tensor_val
=
onnx
.
helper
.
make_tensor
(
'value'
,
onnx
.
TensorProto
.
INT64
,
[
1
],
[
10
])
shape_val
=
np
.
array
([
2
,
3
,
4
]).
astype
(
np
.
int64
)
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_const
=
helper
.
make_node
(
'Constant'
,
inputs
=
[],
...
...
@@ -674,10 +659,8 @@ def const_of_shape_int64_test():
)
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'ConstantOfShape'
,
inputs
=
[
'shape'
],
outputs
=
[
'y'
],
value
=
tensor_val
)
node
=
onnx
.
helper
.
make_node
(
'ConstantOfShape'
,
inputs
=
[
'shape'
],
outputs
=
[
'y'
],
value
=
tensor_val
)
return
([
shape_const
,
node
],
[],
[
y
])
...
...
@@ -685,10 +668,11 @@ def const_of_shape_int64_test():
@
onnx_test
def
const_of_shape_no_value_attr_test
():
shape_val
=
np
.
array
([
2
,
3
,
4
]).
astype
(
np
.
int64
)
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_const
=
helper
.
make_node
(
'Constant'
,
inputs
=
[],
...
...
@@ -735,10 +719,8 @@ def conv_attr_fail_test():
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
3
])
out
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
3
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
],
strides
=
[
1
,
1
],
outputs
=
[
'2'
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
],
strides
=
[
1
,
1
],
outputs
=
[
'2'
])
return
([
node
],
[
x
,
y
],
[
out
])
...
...
@@ -749,13 +731,14 @@ def conv_autopad_fail_test():
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
1
,
1
])
out
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
34
,
34
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
auto_pad
=
'SAME'
,
pads
=
[
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
auto_pad
=
'SAME'
,
pads
=
[
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
])
return
([
node
],
[
x
,
y
],
[
out
])
...
...
@@ -766,12 +749,13 @@ def conv_autopad_same_test():
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
3
,
3
])
out
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
32
,
32
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
auto_pad
=
'SAME'
)
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
auto_pad
=
'SAME'
)
return
([
node
],
[
x
,
y
],
[
out
])
...
...
@@ -783,11 +767,12 @@ def conv_bias_test():
z
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
1
])
out
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
28
,
28
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
])
return
([
node
],
[
x
,
y
,
z
],
[
out
])
...
...
@@ -804,26 +789,29 @@ def conv_bn_relu_maxpool_test():
out
=
helper
.
make_tensor_value_info
(
'10'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
14
,
14
])
node0
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'7'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node1
=
onnx
.
helper
.
make_node
(
'BatchNormalization'
,
inputs
=
[
'7'
,
'3'
,
'4'
,
'5'
,
'6'
],
outputs
=
[
'8'
],
epsilon
=
9.99999974737875e-06
,
momentum
=
0.899999976158142
)
node0
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'7'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node1
=
onnx
.
helper
.
make_node
(
'BatchNormalization'
,
inputs
=
[
'7'
,
'3'
,
'4'
,
'5'
,
'6'
],
outputs
=
[
'8'
],
epsilon
=
9.99999974737875e-06
,
momentum
=
0.899999976158142
)
node2
=
onnx
.
helper
.
make_node
(
'Relu'
,
inputs
=
[
'8'
],
outputs
=
[
'9'
])
node3
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'9'
],
outputs
=
[
'10'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
node3
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'9'
],
outputs
=
[
'10'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
return
([
node0
,
node1
,
node2
,
node3
],
[
x
,
y
,
z
,
m
,
n
,
k
,
l
],
[
out
])
...
...
@@ -835,21 +823,23 @@ def conv_relu_maxpool_test():
z
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
1
])
out
=
helper
.
make_tensor_value_info
(
'5'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
14
,
14
])
node1
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node1
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node2
=
onnx
.
helper
.
make_node
(
'Relu'
,
inputs
=
[
'3'
],
outputs
=
[
'4'
])
node3
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'4'
],
outputs
=
[
'5'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
node3
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'4'
],
outputs
=
[
'5'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
return
([
node1
,
node2
,
node3
],
[
x
,
y
,
z
],
[
out
])
...
...
@@ -863,37 +853,41 @@ def conv_relu_maxpool_x2_test():
n
=
helper
.
make_tensor_value_info
(
'4'
,
TensorProto
.
FLOAT
,
[
1
])
out
=
helper
.
make_tensor_value_info
(
'10'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node1
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'5'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node1
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'5'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node2
=
onnx
.
helper
.
make_node
(
'Relu'
,
inputs
=
[
'5'
],
outputs
=
[
'6'
])
node3
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'6'
],
outputs
=
[
'7'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
node3
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'6'
],
outputs
=
[
'7'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
node4
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'7'
,
'3'
,
'4'
],
outputs
=
[
'8'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node4
=
onnx
.
helper
.
make_node
(
'Conv'
,
inputs
=
[
'7'
,
'3'
,
'4'
],
outputs
=
[
'8'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
],
pads
=
[
0
,
0
,
0
,
0
])
node5
=
onnx
.
helper
.
make_node
(
'Relu'
,
inputs
=
[
'8'
],
outputs
=
[
'9'
])
node6
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'9'
],
outputs
=
[
'10'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
node6
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'9'
],
outputs
=
[
'10'
],
pads
=
[
0
,
0
,
0
,
0
],
strides
=
[
2
,
2
],
kernel_shape
=
[
2
,
2
])
return
([
node1
,
node2
,
node3
,
node4
,
node5
,
node6
],
[
x
,
y
,
z
,
m
,
n
],
[
out
])
...
...
@@ -905,11 +899,12 @@ def convinteger_bias_test():
z
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
INT32
,
[
1
])
out
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
INT32
,
[
1
,
2
,
28
,
28
])
node
=
onnx
.
helper
.
make_node
(
'ConvInteger'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'ConvInteger'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
dilations
=
[
1
,
1
],
strides
=
[
1
,
1
])
return
([
node
],
[
x
,
y
,
z
],
[
out
])
...
...
@@ -948,10 +943,8 @@ def deconv_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
name
=
'conv1'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
name
=
'conv1'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -963,10 +956,8 @@ def deconv_bias_test():
b
=
helper
.
make_tensor_value_info
(
'b'
,
TensorProto
.
FLOAT
,
[
1
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
name
=
'conv1'
,
inputs
=
[
'x'
,
'w'
,
'b'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
name
=
'conv1'
,
inputs
=
[
'x'
,
'w'
,
'b'
],
outputs
=
[
'y'
])
return
([
node
],
[
x
,
w
,
b
],
[
y
])
...
...
@@ -977,11 +968,12 @@ def deconv_input_pads_strides_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
7
,
5
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
pads
=
[
1
,
1
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
pads
=
[
1
,
1
,
1
,
1
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -992,11 +984,12 @@ def deconv_input_pads_asymm_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
8
,
6
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
pads
=
[
0
,
0
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
pads
=
[
0
,
0
,
1
,
1
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1007,12 +1000,13 @@ def deconv_input_pads_asymm_1d_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
6
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
2
],
pads
=
[
0
,
1
],
dilations
=
[
1
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
2
],
pads
=
[
0
,
1
],
dilations
=
[
1
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1023,11 +1017,12 @@ def deconv_output_padding_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
10
,
8
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
output_padding
=
[
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
output_padding
=
[
1
,
1
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1038,11 +1033,12 @@ def deconv_output_padding_3d_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
10
,
8
,
8
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
,
2
],
output_padding
=
[
1
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
,
2
],
output_padding
=
[
1
,
1
,
1
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1053,11 +1049,12 @@ def deconv_output_shape_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
10
,
8
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
output_shape
=
[
10
,
8
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
],
output_shape
=
[
10
,
8
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1068,11 +1065,12 @@ def deconv_output_shape_3d_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
10
,
8
,
8
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
,
2
],
output_shape
=
[
10
,
8
,
8
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
,
2
],
output_shape
=
[
10
,
8
,
8
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1083,10 +1081,8 @@ def deconv_stride_test():
w
=
helper
.
make_tensor_value_info
(
'w'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
7
,
3
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
])
node
=
onnx
.
helper
.
make_node
(
'ConvTranspose'
,
inputs
=
[
'x'
,
'w'
],
outputs
=
[
'y'
],
strides
=
[
3
,
2
])
return
([
node
],
[
x
,
w
],
[
y
])
...
...
@@ -1097,11 +1093,8 @@ def depthtospace_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
8
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
10
,
10
])
node
=
onnx
.
helper
.
make_node
(
'DepthToSpace'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
,
mode
=
'DCR'
)
node
=
onnx
.
helper
.
make_node
(
'DepthToSpace'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
,
mode
=
'DCR'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1112,11 +1105,8 @@ def depthtospace_simple_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
8
,
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
4
,
6
])
node
=
onnx
.
helper
.
make_node
(
'DepthToSpace'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
,
mode
=
'DCR'
)
node
=
onnx
.
helper
.
make_node
(
'DepthToSpace'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
,
mode
=
'DCR'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1127,11 +1117,8 @@ def depthtospace_crd_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
8
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
10
,
10
])
node
=
onnx
.
helper
.
make_node
(
'DepthToSpace'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
,
mode
=
'CRD'
)
node
=
onnx
.
helper
.
make_node
(
'DepthToSpace'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
,
mode
=
'CRD'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1142,10 +1129,8 @@ def spacetodepth_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
float
,
[
2
,
2
,
10
,
10
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
float
,
[
2
,
8
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'spacetodepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
)
node
=
onnx
.
helper
.
make_node
(
'spacetodepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1156,10 +1141,8 @@ def spacetodepth_simple_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
4
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
8
,
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'SpaceToDepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
)
node
=
onnx
.
helper
.
make_node
(
'SpaceToDepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1170,10 +1153,8 @@ def spacetodepth_invalid_blocksize_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
4
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
8
,
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'SpaceToDepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
0.3
)
node
=
onnx
.
helper
.
make_node
(
'SpaceToDepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
0.3
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1184,10 +1165,8 @@ def spacetodepth_nondivisibility_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
8
,
2
,
2
])
node
=
onnx
.
helper
.
make_node
(
'SpaceToDepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
)
node
=
onnx
.
helper
.
make_node
(
'SpaceToDepth'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
blocksize
=
2
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1230,10 +1209,8 @@ def make_dequantizelinear_axis_graph(axis):
arg_out
=
helper
.
make_tensor_value_info
(
'out'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
1
])
node
=
onnx
.
helper
.
make_node
(
'DequantizeLinear'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'out'
],
axis
=
axis
)
node
=
onnx
.
helper
.
make_node
(
'DequantizeLinear'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'out'
],
axis
=
axis
)
return
([
node
],
[
arg0
,
arg1
,
arg2
],
[
arg_out
])
...
...
@@ -1267,10 +1244,8 @@ def elu_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
3
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
3
])
node
=
onnx
.
helper
.
make_node
(
'Elu'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
alpha
=
0.01
)
node
=
onnx
.
helper
.
make_node
(
'Elu'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
alpha
=
0.01
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1281,25 +1256,23 @@ def embedding_bag_test():
index_val
=
np
.
array
([
1
,
0
,
2
])
offset_val
=
np
.
array
([
0
])
index_tensor
=
helper
.
make_tensor
(
name
=
'index_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
index_val
.
shape
,
vals
=
index_val
.
astype
(
np
.
int32
))
index_tensor
=
helper
.
make_tensor
(
name
=
'index_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
index_val
.
shape
,
vals
=
index_val
.
astype
(
np
.
int32
))
index
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'index'
],
value
=
index_tensor
)
index
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'index'
],
value
=
index_tensor
)
offset_tensor
=
helper
.
make_tensor
(
name
=
'offset_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
offset_val
.
reshape
(()).
shape
,
vals
=
offset_val
.
astype
(
np
.
int32
))
offset_tensor
=
helper
.
make_tensor
(
name
=
'offset_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
offset_val
.
reshape
(()).
shape
,
vals
=
offset_val
.
astype
(
np
.
int32
))
offset
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'offset'
],
value
=
offset_tensor
)
offset
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'offset'
],
value
=
offset_tensor
)
weight
=
helper
.
make_tensor_value_info
(
'weight'
,
TensorProto
.
FLOAT
,
[
4
,
2
])
...
...
@@ -1307,23 +1280,26 @@ def embedding_bag_test():
y2
=
helper
.
make_tensor_value_info
(
'y2'
,
TensorProto
.
FLOAT
,
[
1
,
2
])
y3
=
helper
.
make_tensor_value_info
(
'y3'
,
TensorProto
.
FLOAT
,
[
1
,
2
])
node1
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y1'
],
mode
=
0
,
operator
=
'embedding_bag'
)
node2
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y2'
],
mode
=
1
,
operator
=
'embedding_bag'
)
node1
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y1'
],
mode
=
0
,
operator
=
'embedding_bag'
)
node3
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y3'
],
mode
=
2
,
operator
=
'embedding_bag'
)
node2
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y2'
],
mode
=
1
,
operator
=
'embedding_bag'
)
node3
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y3'
],
mode
=
2
,
operator
=
'embedding_bag'
)
return
([
index
,
offset
,
node1
,
node2
,
node3
],
[
weight
],
[
y1
,
y2
,
y3
])
...
...
@@ -1334,35 +1310,34 @@ def embedding_bag_offset_test():
index_val
=
np
.
array
([
1
,
0
])
offset_val
=
np
.
array
([
0
,
1
])
index_tensor
=
helper
.
make_tensor
(
name
=
'index_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
index_val
.
shape
,
vals
=
index_val
.
astype
(
np
.
int32
))
index_tensor
=
helper
.
make_tensor
(
name
=
'index_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
index_val
.
shape
,
vals
=
index_val
.
astype
(
np
.
int32
))
index
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'index'
],
value
=
index_tensor
)
index
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'index'
],
value
=
index_tensor
)
offset_tensor
=
helper
.
make_tensor
(
name
=
'offset_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
offset_val
.
shape
,
vals
=
offset_val
.
astype
(
np
.
int32
))
offset_tensor
=
helper
.
make_tensor
(
name
=
'offset_val'
,
data_type
=
TensorProto
.
INT32
,
dims
=
offset_val
.
shape
,
vals
=
offset_val
.
astype
(
np
.
int32
))
offset
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'offset'
],
value
=
offset_tensor
)
offset
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'offset'
],
value
=
offset_tensor
)
weight
=
helper
.
make_tensor_value_info
(
'weight'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y'
],
mode
=
0
,
operator
=
'embedding_bag'
)
node
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'weight'
,
'index'
,
'offset'
],
outputs
=
[
'y'
],
mode
=
0
,
operator
=
'embedding_bag'
)
return
([
index
,
offset
,
node
],
[
weight
],
[
y
])
...
...
@@ -1370,10 +1345,11 @@ def embedding_bag_offset_test():
@
onnx_test
def
equal_test
():
ax1
=
np
.
array
([
1.0
,
2.0
,
3.0
,
4.0
,
5.0
,
6.0
])
x1
=
helper
.
make_tensor
(
"x1"
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
(
2
,
3
),
vals
=
ax1
.
astype
(
np
.
float32
))
x1
=
helper
.
make_tensor
(
"x1"
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
(
2
,
3
),
vals
=
ax1
.
astype
(
np
.
float32
))
x2
=
helper
.
make_tensor_value_info
(
'x2'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
...
...
@@ -1436,10 +1412,11 @@ def exp_test():
@
onnx_test
def
expand_test
():
shape_val
=
np
.
array
([
2
,
3
,
4
,
5
]).
astype
(
np
.
int64
)
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_ts
=
helper
.
make_tensor
(
name
=
'shape_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
shape_val
.
shape
,
vals
=
shape_val
.
flatten
().
astype
(
int
))
shape_const
=
helper
.
make_node
(
'Constant'
,
inputs
=
[],
...
...
@@ -1449,9 +1426,8 @@ def expand_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
1
,
1
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
,
5
])
node
=
onnx
.
helper
.
make_node
(
'Expand'
,
inputs
=
[
'x'
,
'shape'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'Expand'
,
inputs
=
[
'x'
,
'shape'
],
outputs
=
[
'y'
])
return
([
shape_const
,
node
],
[
x
],
[
y
])
...
...
@@ -1507,10 +1483,8 @@ def eyelike_k_test():
def
eyelike_k_outofbounds_neg_test
():
T1
=
helper
.
make_tensor_value_info
(
'T1'
,
TensorProto
.
FLOAT
,
[
2
,
4
])
T2
=
helper
.
make_tensor_value_info
(
'T2'
,
TensorProto
.
FLOAT
,
[
2
,
4
])
node
=
onnx
.
helper
.
make_node
(
'EyeLike'
,
inputs
=
[
'T1'
],
outputs
=
[
'T2'
],
k
=-
2
)
node
=
onnx
.
helper
.
make_node
(
'EyeLike'
,
inputs
=
[
'T1'
],
outputs
=
[
'T2'
],
k
=-
2
)
return
([
node
],
[
T1
],
[
T2
])
...
...
@@ -1546,10 +1520,8 @@ def eyelike_verify_test():
def
eyelike_verify_negk_test
():
T1
=
helper
.
make_tensor_value_info
(
'T1'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
T2
=
helper
.
make_tensor_value_info
(
'T2'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'EyeLike'
,
inputs
=
[
'T1'
],
outputs
=
[
'T2'
],
k
=-
2
)
node
=
onnx
.
helper
.
make_node
(
'EyeLike'
,
inputs
=
[
'T1'
],
outputs
=
[
'T2'
],
k
=-
2
)
return
([
node
],
[
T1
],
[
T2
])
...
...
@@ -1557,10 +1529,8 @@ def eyelike_verify_negk_test():
def
eyelike_set_dtype_test
():
T1
=
helper
.
make_tensor_value_info
(
'T1'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
T2
=
helper
.
make_tensor_value_info
(
'T2'
,
TensorProto
.
DOUBLE
,
[
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'EyeLike'
,
inputs
=
[
'T1'
],
outputs
=
[
'T2'
],
dtype
=
TensorProto
.
DOUBLE
)
node
=
onnx
.
helper
.
make_node
(
'EyeLike'
,
inputs
=
[
'T1'
],
outputs
=
[
'T2'
],
dtype
=
TensorProto
.
DOUBLE
)
return
([
node
],
[
T1
],
[
T2
])
...
...
@@ -1570,10 +1540,8 @@ def flatten_test():
y
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
6
,
20
])
y2
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
2
,
60
])
node
=
onnx
.
helper
.
make_node
(
'Flatten'
,
inputs
=
[
'0'
],
axis
=
2
,
outputs
=
[
'2'
])
node
=
onnx
.
helper
.
make_node
(
'Flatten'
,
inputs
=
[
'0'
],
axis
=
2
,
outputs
=
[
'2'
])
node2
=
onnx
.
helper
.
make_node
(
'Flatten'
,
inputs
=
[
'0'
],
outputs
=
[
'3'
])
...
...
@@ -1593,10 +1561,8 @@ def flatten_nonstd_test():
perm
=
[
0
,
1
,
3
,
2
],
)
node
=
onnx
.
helper
.
make_node
(
'Flatten'
,
inputs
=
[
'tx'
],
axis
=
2
,
outputs
=
[
'2'
])
node
=
onnx
.
helper
.
make_node
(
'Flatten'
,
inputs
=
[
'tx'
],
axis
=
2
,
outputs
=
[
'2'
])
node2
=
onnx
.
helper
.
make_node
(
'Flatten'
,
inputs
=
[
'tx'
],
outputs
=
[
'3'
])
...
...
@@ -1673,13 +1639,14 @@ def gemm_test():
z
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[])
a
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
7
,
11
])
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
alpha
=
2.0
,
beta
=
2.0
,
transA
=
1
,
transB
=
1
)
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
],
alpha
=
2.0
,
beta
=
2.0
,
transA
=
1
,
transB
=
1
)
return
([
node
],
[
x
,
y
,
z
],
[
a
])
...
...
@@ -1691,12 +1658,13 @@ def gemm_ex_test():
m3
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
6
,
7
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
6
,
7
])
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'1'
,
'2'
,
'3'
],
outputs
=
[
'y'
],
alpha
=
0.5
,
beta
=
0.8
,
transA
=
1
)
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'1'
,
'2'
,
'3'
],
outputs
=
[
'y'
],
alpha
=
0.5
,
beta
=
0.8
,
transA
=
1
)
return
([
node
],
[
m1
,
m2
,
m3
],
[
y
])
...
...
@@ -1708,12 +1676,13 @@ def gemm_ex_brcst_test():
m3
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
6
,
1
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
6
,
7
])
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'1'
,
'2'
,
'3'
],
outputs
=
[
'y'
],
alpha
=
0.5
,
beta
=
0.8
,
transA
=
1
)
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'1'
,
'2'
,
'3'
],
outputs
=
[
'y'
],
alpha
=
0.5
,
beta
=
0.8
,
transA
=
1
)
return
([
node
],
[
m1
,
m2
,
m3
],
[
y
])
...
...
@@ -1725,12 +1694,13 @@ def gemm_half_test():
m3
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT16
,
[
1
,
1
,
6
,
1
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT16
,
[
1
,
1
,
6
,
7
])
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'1'
,
'2'
,
'3'
],
outputs
=
[
'y'
],
alpha
=
0.5
,
beta
=
0.8
,
transA
=
1
)
node
=
onnx
.
helper
.
make_node
(
'Gemm'
,
inputs
=
[
'1'
,
'2'
,
'3'
],
outputs
=
[
'y'
],
alpha
=
0.5
,
beta
=
0.8
,
transA
=
1
)
return
([
node
],
[
m1
,
m2
,
m3
],
[
y
])
...
...
@@ -1766,10 +1736,11 @@ def globalmaxpool_test():
@
onnx_test
def
greater_test
():
ax1
=
np
.
array
([
1.0
,
2.0
,
3.0
,
4.0
,
5.0
,
6.0
])
x1
=
helper
.
make_tensor
(
"x1"
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
(
2
,
3
),
vals
=
ax1
.
astype
(
np
.
float32
))
x1
=
helper
.
make_tensor
(
"x1"
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
(
2
,
3
),
vals
=
ax1
.
astype
(
np
.
float32
))
x2
=
helper
.
make_tensor_value_info
(
'x2'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
...
...
@@ -1848,11 +1819,8 @@ def hardsigmoid_double_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
DOUBLE
,
[
1
,
3
,
4
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
DOUBLE
,
[
1
,
3
,
4
,
5
])
node
=
onnx
.
helper
.
make_node
(
'HardSigmoid'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.3
,
beta
=
0.7
)
node
=
onnx
.
helper
.
make_node
(
'HardSigmoid'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.3
,
beta
=
0.7
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -1892,32 +1860,30 @@ def if_else_test():
x
=
onnx
.
helper
.
make_tensor_value_info
(
'x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
onnx
.
helper
.
make_tensor_value_info
(
'y'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
xt
=
np
.
ones
((
2
,
3
)).
astype
(
np
.
float
)
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
yt
=
np
.
random
.
randn
(
2
,
3
).
astype
(
np
.
float
)
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
then_body
=
onnx
.
helper
.
make_graph
([
then_add_node
],
'then_body'
,
[],
[
then_out
])
...
...
@@ -1926,17 +1892,19 @@ def if_else_test():
[
else_out
])
cond
=
np
.
array
([
0
]).
astype
(
np
.
bool
)
cond_tensor
=
helper
.
make_tensor
(
name
=
"cond"
,
data_type
=
TensorProto
.
BOOL
,
dims
=
cond
.
shape
,
vals
=
cond
.
astype
(
bool
))
cond_tensor
=
helper
.
make_tensor
(
name
=
"cond"
,
data_type
=
TensorProto
.
BOOL
,
dims
=
cond
.
shape
,
vals
=
cond
.
astype
(
bool
))
res
=
onnx
.
helper
.
make_tensor_value_info
(
'res'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'res'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'res'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
x
,
y
],
[
res
],
[
cond_tensor
,
xt_tensor
,
yt_tensor
])
...
...
@@ -1980,23 +1948,22 @@ def if_literal_test():
onnx
.
TensorProto
.
BOOL
,
[])
ret
=
onnx
.
helper
.
make_tensor_value_info
(
'ret'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
cond_input
],
[
ret
])
@
onnx_test
def
if_param_excp_test
():
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
x
=
onnx
.
helper
.
make_tensor_value_info
(
'x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
onnx
.
helper
.
make_tensor_value_info
(
'y'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
4
])
...
...
@@ -2004,23 +1971,23 @@ def if_param_excp_test():
yt
=
np
.
random
.
randn
(
2
,
4
).
astype
(
np
.
float
)
xt
=
np
.
random
.
randn
(
2
,
3
).
astype
(
np
.
float
)
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
then_body
=
onnx
.
helper
.
make_graph
([
then_add_node
],
'then_body'
,
[],
[
then_out
],
[
xt_tensor
])
...
...
@@ -2032,33 +1999,33 @@ def if_param_excp_test():
onnx
.
TensorProto
.
BOOL
,
[])
ret
=
onnx
.
helper
.
make_tensor_value_info
(
'ret'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
cond_input
,
x
,
y
],
[
ret
])
@
onnx_test
def
if_param_excp1_test
():
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'sub_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'sub_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
x
=
onnx
.
helper
.
make_tensor_value_info
(
'x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
xt
=
np
.
random
.
randn
(
2
,
3
).
astype
(
np
.
float
)
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'sub_out'
])
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'sub_out'
])
sub_body
=
onnx
.
helper
.
make_graph
([
then_add_node
],
'sub_body'
,
[],
[
then_out
],
[
xt_tensor
])
...
...
@@ -2067,23 +2034,22 @@ def if_param_excp1_test():
onnx
.
TensorProto
.
BOOL
,
[
2
])
ret
=
onnx
.
helper
.
make_tensor_value_info
(
'ret'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
sub_body
,
else_branch
=
sub_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
sub_body
,
else_branch
=
sub_body
)
return
([
node
],
[
cond_input
,
x
],
[
ret
])
@
onnx_test
def
if_param_test
():
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
x
=
onnx
.
helper
.
make_tensor_value_info
(
'x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
onnx
.
helper
.
make_tensor_value_info
(
'y'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
...
...
@@ -2091,23 +2057,23 @@ def if_param_test():
yt
=
np
.
random
.
randn
(
2
,
3
).
astype
(
np
.
float
)
xt
=
np
.
random
.
randn
(
2
,
3
).
astype
(
np
.
float
)
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
then_body
=
onnx
.
helper
.
make_graph
([
then_add_node
],
'then_body'
,
[],
[
then_out
],
[
xt_tensor
])
...
...
@@ -2119,11 +2085,12 @@ def if_param_test():
onnx
.
TensorProto
.
BOOL
,
[])
ret
=
onnx
.
helper
.
make_tensor_value_info
(
'ret'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
cond_input
,
x
,
y
],
[
ret
])
...
...
@@ -2132,14 +2099,12 @@ def if_param_test():
def
if_pl_test
():
out_x
=
onnx
.
helper
.
make_tensor_value_info
(
'out_x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
out_l_x
=
onnx
.
helper
.
make_tensor_value_info
(
'out_l_x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
out_l_x
=
onnx
.
helper
.
make_tensor_value_info
(
'out_l_x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
out_y
=
onnx
.
helper
.
make_tensor_value_info
(
'out_y'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
3
])
out_l_y
=
onnx
.
helper
.
make_tensor_value_info
(
'out_l_y'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
3
])
out_l_y
=
onnx
.
helper
.
make_tensor_value_info
(
'out_l_y'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
3
])
x
=
onnx
.
helper
.
make_tensor_value_info
(
'x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
onnx
.
helper
.
make_tensor_value_info
(
'y'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
3
])
...
...
@@ -2147,23 +2112,23 @@ def if_pl_test():
xt
=
np
.
array
([[
1
,
2
,
3
],
[
4
,
5
,
6
]]).
astype
(
np
.
float32
)
yt
=
np
.
array
([[
8
,
7
,
6
],
[
5
,
4
,
3
],
[
2
,
1
,
0
]]).
astype
(
np
.
float32
)
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'out_x'
])
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'out_x'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'out_y'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'out_y'
])
then_const_node
=
onnx
.
helper
.
make_node
(
'Constant'
,
...
...
@@ -2187,11 +2152,12 @@ def if_pl_test():
onnx
.
TensorProto
.
BOOL
,
[])
ret
=
onnx
.
helper
.
make_tensor_value_info
(
'ret'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'ret'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
cond_input
,
x
,
y
],
[
ret
],
[
xt_tensor
,
yt_tensor
])
...
...
@@ -2201,32 +2167,30 @@ def if_then_test():
x
=
onnx
.
helper
.
make_tensor_value_info
(
'x'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
onnx
.
helper
.
make_tensor_value_info
(
'y'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
then_out
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
else_out
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out'
,
onnx
.
TensorProto
.
FLOAT
,
[
2
,
3
])
xt
=
np
.
ones
((
2
,
3
)).
astype
(
np
.
float
)
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
xt_tensor
=
helper
.
make_tensor
(
name
=
'xt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
xt
.
shape
,
vals
=
xt
.
flatten
().
astype
(
np
.
float32
))
yt
=
np
.
random
.
randn
(
2
,
3
).
astype
(
np
.
float
)
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
yt_tensor
=
helper
.
make_tensor
(
name
=
'yt'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
yt
.
shape
,
vals
=
yt
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'xt'
],
outputs
=
[
'then_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'yt'
],
outputs
=
[
'else_out'
])
then_body
=
onnx
.
helper
.
make_graph
([
then_add_node
],
'then_body'
,
[],
[
then_out
])
...
...
@@ -2235,17 +2199,19 @@ def if_then_test():
[
else_out
])
cond
=
np
.
array
([
1
]).
astype
(
np
.
bool
)
cond_tensor
=
helper
.
make_tensor
(
name
=
"cond"
,
data_type
=
TensorProto
.
BOOL
,
dims
=
cond
.
shape
,
vals
=
cond
.
astype
(
bool
))
cond_tensor
=
helper
.
make_tensor
(
name
=
"cond"
,
data_type
=
TensorProto
.
BOOL
,
dims
=
cond
.
shape
,
vals
=
cond
.
astype
(
bool
))
res
=
onnx
.
helper
.
make_tensor_value_info
(
'res'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'res'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'res'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
x
,
y
],
[
res
],
[
cond_tensor
,
xt_tensor
,
yt_tensor
])
...
...
@@ -2257,50 +2223,45 @@ def if_tuple_test():
cond_input
=
onnx
.
helper
.
make_tensor_value_info
(
'cond'
,
onnx
.
TensorProto
.
BOOL
,
[])
then_out0
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out0'
,
onnx
.
TensorProto
.
FLOAT
,
[
1
,
4
])
then_out1
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out1'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
4
])
else_out0
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out0'
,
onnx
.
TensorProto
.
FLOAT
,
[
1
,
4
])
else_out1
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out1'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
4
])
then_out0
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out0'
,
onnx
.
TensorProto
.
FLOAT
,
[
1
,
4
])
then_out1
=
onnx
.
helper
.
make_tensor_value_info
(
'then_out1'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
4
])
else_out0
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out0'
,
onnx
.
TensorProto
.
FLOAT
,
[
1
,
4
])
else_out1
=
onnx
.
helper
.
make_tensor_value_info
(
'else_out1'
,
onnx
.
TensorProto
.
FLOAT
,
[
3
,
4
])
one
=
np
.
ones
([
1
]).
astype
(
np
.
float
)
one_tensor
=
helper
.
make_tensor
(
name
=
'one'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
one
.
shape
,
vals
=
one
.
flatten
().
astype
(
np
.
float32
))
one_tensor
=
helper
.
make_tensor
(
name
=
'one'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
one
.
shape
,
vals
=
one
.
flatten
().
astype
(
np
.
float32
))
two
=
np
.
array
([
2
]).
astype
(
np
.
float
)
two_tensor
=
helper
.
make_tensor
(
name
=
'two'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
two
.
shape
,
vals
=
two
.
flatten
().
astype
(
np
.
float32
))
two_tensor
=
helper
.
make_tensor
(
name
=
'two'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
two
.
shape
,
vals
=
two
.
flatten
().
astype
(
np
.
float32
))
three
=
np
.
array
([
3
]).
astype
(
np
.
float
)
three_tensor
=
helper
.
make_tensor
(
name
=
'three'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
three
.
shape
,
vals
=
three
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'one'
],
outputs
=
[
'then_out0'
])
then_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'two'
],
outputs
=
[
'then_out1'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'x'
,
'three'
],
outputs
=
[
'else_out0'
])
else_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'y'
,
'three'
],
outputs
=
[
'else_out1'
])
three_tensor
=
helper
.
make_tensor
(
name
=
'three'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
three
.
shape
,
vals
=
three
.
flatten
().
astype
(
np
.
float32
))
then_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'x'
,
'one'
],
outputs
=
[
'then_out0'
])
then_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'y'
,
'two'
],
outputs
=
[
'then_out1'
])
else_mul_node
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'x'
,
'three'
],
outputs
=
[
'else_out0'
])
else_add_node
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'y'
,
'three'
],
outputs
=
[
'else_out1'
])
then_body
=
onnx
.
helper
.
make_graph
([
then_add_node
,
then_mul_node
],
'then_body'
,
[],
[
then_out0
,
then_out1
])
...
...
@@ -2311,14 +2272,15 @@ def if_tuple_test():
res0
=
onnx
.
helper
.
make_tensor_value_info
(
'res0'
,
TensorProto
.
FLOAT
,
[])
res1
=
onnx
.
helper
.
make_tensor_value_info
(
'res1'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'res0'
,
'res1'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
node
=
onnx
.
helper
.
make_node
(
'If'
,
inputs
=
[
'cond'
],
outputs
=
[
'res0'
,
'res1'
],
then_branch
=
then_body
,
else_branch
=
else_body
)
return
([
node
],
[
cond_input
,
x
,
y
],
[
res0
,
res1
],
[
one_tensor
,
two_tensor
,
three_tensor
])
return
([
node
],
[
cond_input
,
x
,
y
],
[
res0
,
res1
],
[
one_tensor
,
two_tensor
,
three_tensor
])
@
onnx_test
...
...
@@ -2326,11 +2288,12 @@ def imagescaler_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
16
,
16
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
3
,
16
,
16
])
node
=
onnx
.
helper
.
make_node
(
'ImageScaler'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
bias
=
[
0.01
,
0.02
,
0.03
],
scale
=
0.5
)
node
=
onnx
.
helper
.
make_node
(
'ImageScaler'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
bias
=
[
0.01
,
0.02
,
0.03
],
scale
=
0.5
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2340,11 +2303,12 @@ def imagescaler_half_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT16
,
[
1
,
3
,
16
,
16
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT16
,
[
1
,
3
,
16
,
16
])
node
=
onnx
.
helper
.
make_node
(
'ImageScaler'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
bias
=
[
0.01
,
0.02
,
0.03
],
scale
=
0.5
)
node
=
onnx
.
helper
.
make_node
(
'ImageScaler'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
bias
=
[
0.01
,
0.02
,
0.03
],
scale
=
0.5
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2399,10 +2363,11 @@ def implicit_sub_bcast_test():
@
onnx_test
def
initializer_not_an_input
():
values
=
np
.
array
([[
1
,
2
,
3
,
4
],
[
5
,
6
,
7
,
8
]])
w
=
helper
.
make_tensor
(
name
=
'w'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
values
.
shape
,
vals
=
values
.
flatten
().
astype
(
np
.
float
))
w
=
helper
.
make_tensor
(
name
=
'w'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
values
.
shape
,
vals
=
values
.
flatten
().
astype
(
np
.
float
))
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
5
,
2
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
5
,
4
])
...
...
@@ -2423,32 +2388,34 @@ def instance_norm_test():
bias
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
2
])
y
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
node
=
onnx
.
helper
.
make_node
(
'InstanceNormalization'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
])
node
=
onnx
.
helper
.
make_node
(
'InstanceNormalization'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'3'
])
return
([
node
],
[
x
,
scale
,
bias
],
[
y
])
@
onnx_test
def
instance_norm_val_test
():
x
=
np
.
array
([[[[
0
,
1
,
2
],
[
3
,
4
,
5
],
[
6
,
7
,
8
]],
[[
0
,
1
,
2
],
[
3
,
4
,
5
],
[
6
,
7
,
8
]]]])
x
=
np
.
array
([[[[
0
,
1
,
2
],
[
3
,
4
,
5
],
[
6
,
7
,
8
]],
[[
0
,
1
,
2
],
[
3
,
4
,
5
],
[
6
,
7
,
8
]]]])
scale
=
np
.
array
([
1
,
2
])
bias
=
np
.
array
([
0
,
1
])
x_tensor
=
helper
.
make_tensor
(
name
=
'x_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
x
.
shape
,
vals
=
x
.
flatten
().
astype
(
np
.
float
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scale_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scale
.
shape
,
vals
=
scale
.
flatten
().
astype
(
np
.
float
))
bias_tensor
=
helper
.
make_tensor
(
name
=
'bias_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
bias
.
shape
,
vals
=
bias
.
flatten
().
astype
(
np
.
float
))
x_tensor
=
helper
.
make_tensor
(
name
=
'x_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
x
.
shape
,
vals
=
x
.
flatten
().
astype
(
np
.
float
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scale_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scale
.
shape
,
vals
=
scale
.
flatten
().
astype
(
np
.
float
))
bias_tensor
=
helper
.
make_tensor
(
name
=
'bias_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
bias
.
shape
,
vals
=
bias
.
flatten
().
astype
(
np
.
float
))
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
3
])
...
...
@@ -2462,23 +2429,26 @@ def instance_norm_val_test():
@
onnx_test
def
instance_norm_val_3d_test
():
x
=
np
.
array
([[[[[
0
,
1
],
[
2
,
3
]],
[[
4
,
5
],
[
6
,
7
]]],
[[[
0
,
1
],
[
2
,
3
]],
[[
4
,
5
],
[
6
,
7
]]]]])
x
=
np
.
array
([[[[[
0
,
1
],
[
2
,
3
]],
[[
4
,
5
],
[
6
,
7
]]],
[[[
0
,
1
],
[
2
,
3
]],
[[
4
,
5
],
[
6
,
7
]]]]])
scale
=
np
.
array
([
1
,
2
])
bias
=
np
.
array
([
0
,
1
])
x_tensor
=
helper
.
make_tensor
(
name
=
'x_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
x
.
shape
,
vals
=
x
.
flatten
().
astype
(
np
.
float
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scale_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scale
.
shape
,
vals
=
scale
.
flatten
().
astype
(
np
.
float
))
bias_tensor
=
helper
.
make_tensor
(
name
=
'bias_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
bias
.
shape
,
vals
=
bias
.
flatten
().
astype
(
np
.
float
))
x_tensor
=
helper
.
make_tensor
(
name
=
'x_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
x
.
shape
,
vals
=
x
.
flatten
().
astype
(
np
.
float
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scale_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scale
.
shape
,
vals
=
scale
.
flatten
().
astype
(
np
.
float
))
bias_tensor
=
helper
.
make_tensor
(
name
=
'bias_tensor'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
bias
.
shape
,
vals
=
bias
.
flatten
().
astype
(
np
.
float
))
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
2
,
2
,
2
])
...
...
@@ -2526,57 +2496,47 @@ def layernorm_test():
pow_2
=
np
.
array
([[[
2
,
2
,
2
,
2
,
2
]]])
epsilon
=
np
.
array
([
1e-12
])
pow_tensor
=
helper
.
make_tensor
(
name
=
'pow'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
pow_2
.
shape
,
vals
=
pow_2
.
flatten
().
astype
(
np
.
float
))
pow_tensor
=
helper
.
make_tensor
(
name
=
'pow'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
pow_2
.
shape
,
vals
=
pow_2
.
flatten
().
astype
(
np
.
float
))
epsilon_tensor
=
helper
.
make_tensor
(
name
=
'epsilon'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
epsilon
.
shape
,
vals
=
epsilon
.
flatten
().
asty
pe
(
np
.
float
))
epsilon_tensor
=
helper
.
make_tensor
(
name
=
'epsilon'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
epsilon
.
sha
pe
,
vals
=
epsilon
.
flatten
().
astype
(
np
.
float
))
mean
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'0'
],
outputs
=
[
'mean_out'
],
axes
=
axes
)
mean
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'0'
],
outputs
=
[
'mean_out'
],
axes
=
axes
)
sub_mean
=
onnx
.
helper
.
make_node
(
'Sub'
,
inputs
=
[
'0'
,
'mean_out'
],
outputs
=
[
'sub_out'
])
sub_mean
=
onnx
.
helper
.
make_node
(
'Sub'
,
inputs
=
[
'0'
,
'mean_out'
],
outputs
=
[
'sub_out'
])
sub_pow
=
onnx
.
helper
.
make_node
(
'Pow'
,
inputs
=
[
'sub_out'
,
'pow'
],
outputs
=
[
'pow_out'
])
sub_pow
=
onnx
.
helper
.
make_node
(
'Pow'
,
inputs
=
[
'sub_out'
,
'pow'
],
outputs
=
[
'pow_out'
])
var
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'pow_out'
],
outputs
=
[
'var_out'
],
axes
=
axes
)
var
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'pow_out'
],
outputs
=
[
'var_out'
],
axes
=
axes
)
add
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'var_out'
,
'epsilon'
],
outputs
=
[
'add_out'
])
add
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'var_out'
,
'epsilon'
],
outputs
=
[
'add_out'
])
sqrt
=
onnx
.
helper
.
make_node
(
'Sqrt'
,
inputs
=
[
'add_out'
],
outputs
=
[
'sqrt_out'
])
sqrt
=
onnx
.
helper
.
make_node
(
'Sqrt'
,
inputs
=
[
'add_out'
],
outputs
=
[
'sqrt_out'
])
div
=
onnx
.
helper
.
make_node
(
'Div'
,
inputs
=
[
'sub_out'
,
'sqrt_out'
],
outputs
=
[
'div_out'
])
div
=
onnx
.
helper
.
make_node
(
'Div'
,
inputs
=
[
'sub_out'
,
'sqrt_out'
],
outputs
=
[
'div_out'
])
mul
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'scale'
,
'div_out'
],
outputs
=
[
'mul_out'
])
mul
=
onnx
.
helper
.
make_node
(
'Mul'
,
inputs
=
[
'scale'
,
'div_out'
],
outputs
=
[
'mul_out'
])
bias_add
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'mul_out'
,
'bias'
],
outputs
=
[
'1'
])
bias_add
=
onnx
.
helper
.
make_node
(
'Add'
,
inputs
=
[
'mul_out'
,
'bias'
],
outputs
=
[
'1'
])
return
([
mean
,
sub_mean
,
sub_pow
,
var
,
add
,
sqrt
,
div
,
mul
,
bias_add
],
[
x
,
scale
,
bias
],
[
y
],
[
pow_tensor
,
epsilon_tensor
])
return
([
mean
,
sub_mean
,
sub_pow
,
var
,
add
,
sqrt
,
div
,
mul
,
bias_add
],
[
x
,
scale
,
bias
],
[
y
],
[
pow_tensor
,
epsilon_tensor
])
@
onnx_test
...
...
@@ -2584,10 +2544,8 @@ def leaky_relu_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
3
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
3
])
node
=
onnx
.
helper
.
make_node
(
'LeakyRelu'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
alpha
=
0.01
)
node
=
onnx
.
helper
.
make_node
(
'LeakyRelu'
,
inputs
=
[
'0'
],
outputs
=
[
'1'
],
alpha
=
0.01
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2595,10 +2553,11 @@ def leaky_relu_test():
@
onnx_test
def
less_test
():
ax1
=
np
.
array
([
1.0
,
2.0
,
3.0
,
4.0
,
5.0
,
6.0
])
x1
=
helper
.
make_tensor
(
"x1"
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
(
2
,
3
),
vals
=
ax1
.
astype
(
np
.
float32
))
x1
=
helper
.
make_tensor
(
"x1"
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
(
2
,
3
),
vals
=
ax1
.
astype
(
np
.
float32
))
x2
=
helper
.
make_tensor_value_info
(
'x2'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
...
...
@@ -2698,10 +2657,8 @@ def logsoftmax_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
,
6
])
node
=
onnx
.
helper
.
make_node
(
'LogSoftmax'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
1
)
node
=
onnx
.
helper
.
make_node
(
'LogSoftmax'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2711,17 +2668,16 @@ def logsoftmax_nonstd_input_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
6
,
9
])
y
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
node0
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
0
],
ends
=
[
4
,
4
],
outputs
=
[
'1'
])
node0
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
0
],
ends
=
[
4
,
4
],
outputs
=
[
'1'
])
node1
=
onnx
.
helper
.
make_node
(
'LogSoftmax'
,
inputs
=
[
'1'
],
outputs
=
[
'2'
],
axis
=-
1
)
node1
=
onnx
.
helper
.
make_node
(
'LogSoftmax'
,
inputs
=
[
'1'
],
outputs
=
[
'2'
],
axis
=-
1
)
return
([
node0
,
node1
],
[
x
],
[
y
])
...
...
@@ -2809,10 +2765,8 @@ def lpnormalization_axis_error_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'LpNormalization'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
2
)
node
=
onnx
.
helper
.
make_node
(
'LpNormalization'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axis
=
2
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2849,10 +2803,8 @@ def lpnormalization_l2_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'LpNormalization'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
p
=
2
)
node
=
onnx
.
helper
.
make_node
(
'LpNormalization'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
p
=
2
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2861,10 +2813,8 @@ def lpnormalization_p_error_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'LpNormalization'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
p
=
3
)
node
=
onnx
.
helper
.
make_node
(
'LpNormalization'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
p
=
3
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -2873,13 +2823,14 @@ def lrn_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
1
,
28
,
24
,
24
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
28
,
24
,
24
])
node
=
onnx
.
helper
.
make_node
(
'LRN'
,
inputs
=
[
'0'
],
size
=
5
,
alpha
=
0.0001
,
beta
=
0.75
,
bias
=
1.0
,
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'LRN'
,
inputs
=
[
'0'
],
size
=
5
,
alpha
=
0.0001
,
beta
=
0.75
,
bias
=
1.0
,
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3010,13 +2961,14 @@ def maxpool_notset_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
6
,
6
],
strides
=
[
2
,
2
],
pads
=
[
0
,
0
,
1
,
1
],
auto_pad
=
'NOTSET'
)
node
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
6
,
6
],
strides
=
[
2
,
2
],
pads
=
[
0
,
0
,
1
,
1
],
auto_pad
=
'NOTSET'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3026,11 +2978,12 @@ def maxpool_same_upper_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_UPPER'
)
node
=
onnx
.
helper
.
make_node
(
'MaxPool'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
kernel_shape
=
[
2
,
2
],
auto_pad
=
'SAME_UPPER'
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3047,9 +3000,8 @@ def mean_broadcast_test():
mean
=
helper
.
make_tensor_value_info
(
'mean'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
"Mean"
,
inputs
=
[
"0"
,
"1"
,
"2"
,
"3"
,
"4"
],
outputs
=
[
"mean"
])
node
=
onnx
.
helper
.
make_node
(
"Mean"
,
inputs
=
[
"0"
,
"1"
,
"2"
,
"3"
,
"4"
],
outputs
=
[
"mean"
])
return
([
node
],
[
data_0
,
data_1
,
data_2
,
data_3
,
data_4
],
[
mean
])
...
...
@@ -3063,9 +3015,8 @@ def mean_fp16_test():
mean
=
helper
.
make_tensor_value_info
(
'mean'
,
TensorProto
.
FLOAT16
,
[
1
,
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
"Mean"
,
inputs
=
[
"0"
,
"1"
,
"2"
],
outputs
=
[
"mean"
])
node
=
onnx
.
helper
.
make_node
(
"Mean"
,
inputs
=
[
"0"
,
"1"
,
"2"
],
outputs
=
[
"mean"
])
return
([
node
],
[
data_0
,
data_1
,
data_2
],
[
mean
])
...
...
@@ -3078,9 +3029,8 @@ def mean_invalid_broadcast_test():
mean
=
helper
.
make_tensor_value_info
(
'mean'
,
TensorProto
.
FLOAT
,
[
1
,
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
"Mean"
,
inputs
=
[
"0"
,
"1"
,
"2"
],
outputs
=
[
"mean"
])
node
=
onnx
.
helper
.
make_node
(
"Mean"
,
inputs
=
[
"0"
,
"1"
,
"2"
],
outputs
=
[
"mean"
])
return
([
node
],
[
data_0
,
data_1
,
data_2
],
[
mean
])
...
...
@@ -3133,11 +3083,12 @@ def multinomial_test():
output
=
helper
.
make_tensor_value_info
(
"output"
,
TensorProto
.
INT32
,
[
1
,
10
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
seed
=
seed
,
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
seed
=
seed
,
outputs
=
[
'output'
])
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3149,10 +3100,11 @@ def multinomial_generated_seed_test():
output
=
helper
.
make_tensor_value_info
(
"output"
,
TensorProto
.
INT32
,
[
1
,
10
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
outputs
=
[
'output'
])
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3165,11 +3117,12 @@ def multinomial_dtype_error_test():
output
=
helper
.
make_tensor_value_info
(
"output"
,
TensorProto
.
INT64
,
[
1
,
10
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
dtype
=
dtype
,
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
dtype
=
dtype
,
outputs
=
[
'output'
])
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3183,12 +3136,13 @@ def multinomial_int64_test():
output
=
helper
.
make_tensor_value_info
(
"output"
,
TensorProto
.
INT64
,
[
1
,
10
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
dtype
=
dtype
,
seed
=
seed
,
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'Multinomial'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
dtype
=
dtype
,
seed
=
seed
,
outputs
=
[
'output'
])
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3216,14 +3170,14 @@ def nms_test():
out
=
helper
.
make_tensor_value_info
(
'selected_indices'
,
TensorProto
.
INT64
,
[
6
,
3
])
node
=
onnx
.
helper
.
make_node
(
'NonMaxSuppression'
,
inputs
=
[
'boxes'
,
'scores'
,
'max_output_boxes_per_class'
,
'iou_threshold'
,
'score_threshold'
],
outputs
=
[
'selected_indices'
],
center_point_box
=
1
)
node
=
onnx
.
helper
.
make_node
(
'NonMaxSuppression'
,
inputs
=
[
'boxes'
,
'scores'
,
'max_output_boxes_per_class'
,
'iou_threshold'
,
'score_threshold'
],
outputs
=
[
'selected_indices'
],
center_point_box
=
1
)
return
([
node
],
[
b
,
s
,
mo
,
iou
,
st
],
[
out
])
...
...
@@ -3253,10 +3207,8 @@ def no_pad_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
2
,
2
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
2
,
2
])
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
inputs
=
[
'0'
],
pads
=
[
0
,
0
,
0
,
0
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
inputs
=
[
'0'
],
pads
=
[
0
,
0
,
0
,
0
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3266,9 +3218,8 @@ def nonzero_dynamic_test():
x
=
helper
.
make_tensor_value_info
(
'data'
,
TensorProto
.
BOOL
,
[
2
,
2
])
y
=
helper
.
make_tensor_value_info
(
'indices'
,
TensorProto
.
INT64
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'NonZero'
,
inputs
=
[
'data'
],
outputs
=
[
'indices'
])
node
=
onnx
.
helper
.
make_node
(
'NonZero'
,
inputs
=
[
'data'
],
outputs
=
[
'indices'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3276,15 +3227,15 @@ def nonzero_dynamic_test():
@
onnx_test
def
nonzero_test
():
data1
=
np
.
array
([[
1.
,
0.
],
[
1.
,
1.
]])
data
=
helper
.
make_tensor
(
name
=
'data'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
data1
.
shape
,
vals
=
data1
.
flatten
().
astype
(
np
.
float
))
data
=
helper
.
make_tensor
(
name
=
'data'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
data1
.
shape
,
vals
=
data1
.
flatten
().
astype
(
np
.
float
))
y
=
helper
.
make_tensor_value_info
(
'indices'
,
TensorProto
.
INT64
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'NonZero'
,
inputs
=
[
'data'
],
outputs
=
[
'indices'
])
node
=
onnx
.
helper
.
make_node
(
'NonZero'
,
inputs
=
[
'data'
],
outputs
=
[
'indices'
])
return
([
node
],
[],
[
y
],
[
data
])
...
...
@@ -3292,15 +3243,15 @@ def nonzero_test():
@
onnx_test
def
nonzero_int_test
():
data1
=
np
.
array
([[
1
,
1
,
0
],
[
1
,
0
,
1
]])
data
=
helper
.
make_tensor
(
name
=
'data'
,
data_type
=
TensorProto
.
INT16
,
dims
=
data1
.
shape
,
vals
=
data1
.
flatten
().
astype
(
np
.
int16
))
data
=
helper
.
make_tensor
(
name
=
'data'
,
data_type
=
TensorProto
.
INT16
,
dims
=
data1
.
shape
,
vals
=
data1
.
flatten
().
astype
(
np
.
int16
))
y
=
helper
.
make_tensor_value_info
(
'indices'
,
TensorProto
.
INT64
,
[
2
,
4
])
node
=
onnx
.
helper
.
make_node
(
'NonZero'
,
inputs
=
[
'data'
],
outputs
=
[
'indices'
])
node
=
onnx
.
helper
.
make_node
(
'NonZero'
,
inputs
=
[
'data'
],
outputs
=
[
'indices'
])
return
([
node
],
[],
[
y
],
[
data
])
...
...
@@ -3314,15 +3265,17 @@ def onehot_test():
values
=
helper
.
make_tensor_value_info
(
"values"
,
TensorProto
.
FLOAT16
,
[
2
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT16
,
[
3
,
5
,
2
])
depth_tensor
=
helper
.
make_tensor
(
name
=
"depth"
,
data_type
=
TensorProto
.
INT32
,
dims
=
None
,
vals
=
depth
.
astype
(
int
))
depth_tensor
=
helper
.
make_tensor
(
name
=
"depth"
,
data_type
=
TensorProto
.
INT32
,
dims
=
None
,
vals
=
depth
.
astype
(
int
))
node
=
onnx
.
helper
.
make_node
(
'OneHot'
,
inputs
=
[
'indices'
,
'depth'
,
'values'
],
outputs
=
[
'y'
],
axis
=
axis_value
)
node
=
onnx
.
helper
.
make_node
(
'OneHot'
,
inputs
=
[
'indices'
,
'depth'
,
'values'
],
outputs
=
[
'y'
],
axis
=
axis_value
)
return
([
node
],
[
indices
,
values
],
[
y
],
[
depth_tensor
])
...
...
@@ -3332,10 +3285,8 @@ def pad_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
2
,
2
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
4
,
4
])
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
inputs
=
[
'0'
],
pads
=
[
1
,
1
,
1
,
1
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
inputs
=
[
'0'
],
pads
=
[
1
,
1
,
1
,
1
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3343,31 +3294,28 @@ def pad_test():
@
onnx_test
def
pad_3arg_test
():
values
=
np
.
array
([
1
])
val_tensor
=
helper
.
make_tensor
(
name
=
'val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
values
.
reshape
(()).
shape
,
vals
=
values
.
astype
(
float
))
arg_val
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_val'
],
value
=
val_tensor
)
val_tensor
=
helper
.
make_tensor
(
name
=
'val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
values
.
reshape
(()).
shape
,
vals
=
values
.
astype
(
float
))
arg_val
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_val'
],
value
=
val_tensor
)
sizes
=
np
.
array
([
1
,
1
,
2
,
2
])
pad_tensor
=
helper
.
make_tensor
(
name
=
'pad_size'
,
data_type
=
TensorProto
.
INT32
,
dims
=
sizes
.
shape
,
vals
=
sizes
.
astype
(
int
))
arg_pad
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_pad'
],
value
=
pad_tensor
)
pad_tensor
=
helper
.
make_tensor
(
name
=
'pad_size'
,
data_type
=
TensorProto
.
INT32
,
dims
=
sizes
.
shape
,
vals
=
sizes
.
astype
(
int
))
arg_pad
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_pad'
],
value
=
pad_tensor
)
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
2
,
2
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
5
,
5
])
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
inputs
=
[
'0'
,
'arg_pad'
,
'arg_val'
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
inputs
=
[
'0'
,
'arg_pad'
,
'arg_val'
],
outputs
=
[
'1'
])
return
([
arg_val
,
arg_pad
,
node
],
[
x
],
[
y
])
...
...
@@ -3378,19 +3326,16 @@ def pad_reflect_test():
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
2
,
5
])
sizes
=
np
.
array
([
0
,
2
,
0
,
1
])
pad_tensor
=
helper
.
make_tensor
(
name
=
'pad_size'
,
data_type
=
TensorProto
.
INT32
,
dims
=
sizes
.
shape
,
vals
=
sizes
.
astype
(
int
))
arg_pad
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_pad'
],
value
=
pad_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
mode
=
'reflect'
,
inputs
=
[
'0'
,
'arg_pad'
],
outputs
=
[
'1'
])
pad_tensor
=
helper
.
make_tensor
(
name
=
'pad_size'
,
data_type
=
TensorProto
.
INT32
,
dims
=
sizes
.
shape
,
vals
=
sizes
.
astype
(
int
))
arg_pad
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_pad'
],
value
=
pad_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
mode
=
'reflect'
,
inputs
=
[
'0'
,
'arg_pad'
],
outputs
=
[
'1'
])
return
([
arg_pad
,
node
],
[
x
],
[
y
])
...
...
@@ -3401,19 +3346,16 @@ def pad_reflect_multiaxis_test():
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
4
,
5
])
sizes
=
np
.
array
([
0
,
2
,
2
,
0
])
pad_tensor
=
helper
.
make_tensor
(
name
=
'pad_size'
,
data_type
=
TensorProto
.
INT32
,
dims
=
sizes
.
shape
,
vals
=
sizes
.
astype
(
int
))
arg_pad
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_pad'
],
value
=
pad_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
mode
=
'reflect'
,
inputs
=
[
'0'
,
'arg_pad'
],
outputs
=
[
'1'
])
pad_tensor
=
helper
.
make_tensor
(
name
=
'pad_size'
,
data_type
=
TensorProto
.
INT32
,
dims
=
sizes
.
shape
,
vals
=
sizes
.
astype
(
int
))
arg_pad
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'arg_pad'
],
value
=
pad_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Pad'
,
mode
=
'reflect'
,
inputs
=
[
'0'
,
'arg_pad'
],
outputs
=
[
'1'
])
return
([
arg_pad
,
node
],
[
x
],
[
y
])
...
...
@@ -3471,15 +3413,13 @@ def prefix_scan_sum_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
2
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
2
])
axis_val
=
np
.
array
([
0
])
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis_val
.
shape
,
vals
=
axis_val
.
astype
(
int
))
node
=
onnx
.
helper
.
make_node
(
'CumSum'
,
inputs
=
[
'x'
,
'axis'
],
outputs
=
[
'y'
],
exclusive
=
1
,
reverse
=
1
)
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis_val
.
shape
,
vals
=
axis_val
.
astype
(
int
))
node
=
onnx
.
helper
.
make_node
(
'CumSum'
,
inputs
=
[
'x'
,
'axis'
],
outputs
=
[
'y'
],
exclusive
=
1
,
reverse
=
1
)
return
([
node
],
[
x
],
[
y
],
[
axis_tensor
])
...
...
@@ -3552,10 +3492,8 @@ def make_quantizelinear_axis_graph(axis):
arg_out
=
helper
.
make_tensor_value_info
(
'out'
,
TensorProto
.
INT8
,
[
1
,
1
,
5
,
1
])
node
=
onnx
.
helper
.
make_node
(
'QuantizeLinear'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'out'
],
axis
=
axis
)
node
=
onnx
.
helper
.
make_node
(
'QuantizeLinear'
,
inputs
=
[
'0'
,
'1'
,
'2'
],
outputs
=
[
'out'
],
axis
=
axis
)
return
([
node
],
[
arg0
,
arg1
,
arg2
],
[
arg_out
])
...
...
@@ -3580,14 +3518,15 @@ def randomnormal_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
DOUBLE
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
mean
=
mean
,
scale
=
scale
,
seed
=
seed
,
shape
=
shape
)
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
mean
=
mean
,
scale
=
scale
,
seed
=
seed
,
shape
=
shape
)
return
([
node
],
[],
[
output
])
...
...
@@ -3599,11 +3538,12 @@ def randomnormal_dtype_error_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
INT32
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
shape
=
shape
)
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
shape
=
shape
)
return
([
node
],
[],
[
output
])
...
...
@@ -3615,10 +3555,11 @@ def randomnormal_generated_seed_test():
output
=
helper
.
make_tensor_value_info
(
"output"
,
TensorProto
.
INT32
,
[
1
,
10
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
outputs
=
[
'output'
])
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3629,10 +3570,8 @@ def randomnormal_shape_error_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
)
node
=
onnx
.
helper
.
make_node
(
'RandomNormal'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
)
return
([
node
],
[],
[
output
])
...
...
@@ -3648,13 +3587,14 @@ def randomnormallike_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT16
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormalLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
dtype
=
dtype
,
mean
=
mean
,
scale
=
scale
,
seed
=
seed
)
node
=
onnx
.
helper
.
make_node
(
'RandomNormalLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
dtype
=
dtype
,
mean
=
mean
,
scale
=
scale
,
seed
=
seed
)
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3667,10 +3607,8 @@ def randomnormallike_type_error_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomNormalLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
seed
=
seed
)
node
=
onnx
.
helper
.
make_node
(
'RandomNormalLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
seed
=
seed
)
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3685,14 +3623,15 @@ def randomuniform_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
DOUBLE
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
high
=
high
,
low
=
low
,
seed
=
seed
,
shape
=
shape
)
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
high
=
high
,
low
=
low
,
seed
=
seed
,
shape
=
shape
)
return
([
node
],
[],
[
output
])
...
...
@@ -3704,11 +3643,12 @@ def randomuniform_dtype_error_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
INT32
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
shape
=
shape
)
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
,
shape
=
shape
)
return
([
node
],
[],
[
output
])
...
...
@@ -3720,10 +3660,11 @@ def randomuniform_generated_seed_test():
output
=
helper
.
make_tensor_value_info
(
"output"
,
TensorProto
.
INT32
,
[
1
,
10
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[
'input'
],
sample_size
=
sample_size
,
outputs
=
[
'output'
])
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3734,10 +3675,8 @@ def randomuniform_shape_error_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
)
node
=
onnx
.
helper
.
make_node
(
'RandomUniform'
,
inputs
=
[],
outputs
=
[
'output'
],
dtype
=
dtype
)
return
([
node
],
[],
[
output
])
...
...
@@ -3753,13 +3692,14 @@ def randomuniformlike_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT16
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniformLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
dtype
=
dtype
,
high
=
high
,
low
=
low
,
seed
=
seed
)
node
=
onnx
.
helper
.
make_node
(
'RandomUniformLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
dtype
=
dtype
,
high
=
high
,
low
=
low
,
seed
=
seed
)
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3772,10 +3712,8 @@ def randomuniformlike_type_error_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
])
node
=
onnx
.
helper
.
make_node
(
'RandomUniformLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
seed
=
seed
)
node
=
onnx
.
helper
.
make_node
(
'RandomUniformLike'
,
inputs
=
[
'input'
],
outputs
=
[
'output'
],
seed
=
seed
)
return
([
node
],
[
input
],
[
output
])
...
...
@@ -3787,36 +3725,32 @@ def range_test():
limit_val
=
np
.
array
([
6
])
delta_val
=
np
.
array
([
-
3
])
start_tensor
=
helper
.
make_tensor
(
name
=
'start_val'
,
data_type
=
TensorProto
.
INT64
,
dims
=
start_val
.
reshape
(()).
shape
,
vals
=
start_val
.
astype
(
np
.
int64
))
start
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'start'
],
value
=
start_tensor
)
limit_tensor
=
helper
.
make_tensor
(
name
=
'limit_val'
,
data_type
=
TensorProto
.
INT64
,
dims
=
limit_val
.
reshape
(()).
shape
,
vals
=
limit_val
.
astype
(
np
.
int64
))
limit
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'limit'
],
value
=
limit_tensor
)
delta_tensor
=
helper
.
make_tensor
(
name
=
'delta_val'
,
data_type
=
TensorProto
.
INT64
,
dims
=
delta_val
.
reshape
(()).
shape
,
vals
=
delta_val
.
astype
(
np
.
int64
))
delta
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'delta'
],
value
=
delta_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Range'
,
inputs
=
[
'start'
,
'limit'
,
'delta'
],
outputs
=
[
'1'
])
start_tensor
=
helper
.
make_tensor
(
name
=
'start_val'
,
data_type
=
TensorProto
.
INT64
,
dims
=
start_val
.
reshape
(()).
shape
,
vals
=
start_val
.
astype
(
np
.
int64
))
start
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'start'
],
value
=
start_tensor
)
limit_tensor
=
helper
.
make_tensor
(
name
=
'limit_val'
,
data_type
=
TensorProto
.
INT64
,
dims
=
limit_val
.
reshape
(()).
shape
,
vals
=
limit_val
.
astype
(
np
.
int64
))
limit
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'limit'
],
value
=
limit_tensor
)
delta_tensor
=
helper
.
make_tensor
(
name
=
'delta_val'
,
data_type
=
TensorProto
.
INT64
,
dims
=
delta_val
.
reshape
(()).
shape
,
vals
=
delta_val
.
astype
(
np
.
int64
))
delta
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'delta'
],
value
=
delta_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Range'
,
inputs
=
[
'start'
,
'limit'
,
'delta'
],
outputs
=
[
'1'
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
3
])
...
...
@@ -3830,36 +3764,32 @@ def range_float_test():
limit_val
=
np
.
array
([
11
])
delta_val
=
np
.
array
([
2
])
start_tensor
=
helper
.
make_tensor
(
name
=
'start_val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
start_val
.
reshape
(()).
shape
,
vals
=
start_val
.
astype
(
np
.
float
))
start
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'start'
],
value
=
start_tensor
)
limit_tensor
=
helper
.
make_tensor
(
name
=
'limit_val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
limit_val
.
reshape
(()).
shape
,
vals
=
limit_val
.
astype
(
np
.
float
))
limit
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'limit'
],
value
=
limit_tensor
)
delta_tensor
=
helper
.
make_tensor
(
name
=
'delta_val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
delta_val
.
reshape
(()).
shape
,
vals
=
delta_val
.
astype
(
np
.
float
))
delta
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'delta'
],
value
=
delta_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Range'
,
inputs
=
[
'start'
,
'limit'
,
'delta'
],
outputs
=
[
'1'
])
start_tensor
=
helper
.
make_tensor
(
name
=
'start_val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
start_val
.
reshape
(()).
shape
,
vals
=
start_val
.
astype
(
np
.
float
))
start
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'start'
],
value
=
start_tensor
)
limit_tensor
=
helper
.
make_tensor
(
name
=
'limit_val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
limit_val
.
reshape
(()).
shape
,
vals
=
limit_val
.
astype
(
np
.
float
))
limit
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'limit'
],
value
=
limit_tensor
)
delta_tensor
=
helper
.
make_tensor
(
name
=
'delta_val'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
delta_val
.
reshape
(()).
shape
,
vals
=
delta_val
.
astype
(
np
.
float
))
delta
=
onnx
.
helper
.
make_node
(
'Constant'
,
inputs
=
[],
outputs
=
[
'delta'
],
value
=
delta_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Range'
,
inputs
=
[
'start'
,
'limit'
,
'delta'
],
outputs
=
[
'1'
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
3
])
...
...
@@ -3886,11 +3816,8 @@ def reducel1_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
6
])
axes
=
[
-
2
]
node
=
onnx
.
helper
.
make_node
(
'ReduceL1'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceL1'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3901,11 +3828,8 @@ def reducel2_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
])
axes
=
[
-
1
]
node
=
onnx
.
helper
.
make_node
(
'ReduceL2'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceL2'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3916,11 +3840,8 @@ def reduce_log_sum_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
1
,
5
,
6
])
axes
=
[
-
3
]
node
=
onnx
.
helper
.
make_node
(
'ReduceLogSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
node
=
onnx
.
helper
.
make_node
(
'ReduceLogSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3931,11 +3852,8 @@ def reduce_log_sum_exp_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
4
,
5
,
6
])
axes
=
[
-
4
]
node
=
onnx
.
helper
.
make_node
(
'ReduceLogSumExp'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
node
=
onnx
.
helper
.
make_node
(
'ReduceLogSumExp'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3946,11 +3864,8 @@ def reducemax_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
6
])
axes
=
[
2
]
node
=
onnx
.
helper
.
make_node
(
'ReduceMax'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceMax'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3961,11 +3876,8 @@ def reducemean_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
axes
=
[
2
,
3
]
node
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3976,11 +3888,8 @@ def reducemean_keepdims_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
6
])
axes
=
[
2
]
node
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
node
=
onnx
.
helper
.
make_node
(
'ReduceMean'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -3991,11 +3900,8 @@ def reducemin_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
1
,
5
,
1
])
axes
=
[
1
,
3
]
node
=
onnx
.
helper
.
make_node
(
'ReduceMin'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
node
=
onnx
.
helper
.
make_node
(
'ReduceMin'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4006,11 +3912,8 @@ def reduceprod_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
6
])
axes
=
[
2
]
node
=
onnx
.
helper
.
make_node
(
'ReduceProd'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
node
=
onnx
.
helper
.
make_node
(
'ReduceProd'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4021,11 +3924,8 @@ def reducesum_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
6
])
axes
=
[
2
]
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4035,16 +3935,18 @@ def reducesum_empty_axes_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
6
])
axes
=
np
.
array
([],
dtype
=
np
.
int64
)
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
],
keepdims
=
0
,
noop_with_empty_axes
=
False
)
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
],
keepdims
=
0
,
noop_with_empty_axes
=
False
)
return
([
node
],
[
x
],
[
y
],
[
axes_tensor
])
...
...
@@ -4054,16 +3956,18 @@ def reducesum_noop_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
5
,
6
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
6
])
axes
=
np
.
array
([],
dtype
=
np
.
int64
)
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
],
keepdims
=
0
,
noop_with_empty_axes
=
True
)
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
],
keepdims
=
0
,
noop_with_empty_axes
=
True
)
return
([
node
],
[
x
],
[
y
],
[
axes_tensor
])
...
...
@@ -4074,11 +3978,8 @@ def reducesum_keepdims_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
1
])
axes
=
[
2
,
3
]
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
1
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4089,11 +3990,8 @@ def reducesum_multiaxis_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
1
,
1
])
axes
=
[
2
,
3
]
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceSum'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4104,11 +4002,8 @@ def reducesum_square_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
4
,
6
])
axes
=
[
-
2
]
node
=
onnx
.
helper
.
make_node
(
'ReduceSumSquare'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
node
=
onnx
.
helper
.
make_node
(
'ReduceSumSquare'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
axes
=
axes
,
keepdims
=
0
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4123,10 +4018,8 @@ def reshape_test():
node
=
onnx
.
helper
.
make_node
(
'Reshape'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
])
node2
=
onnx
.
helper
.
make_node
(
'Reshape'
,
inputs
=
[
'0'
],
shape
=
x_shape_list
,
outputs
=
[
'3'
])
node2
=
onnx
.
helper
.
make_node
(
'Reshape'
,
inputs
=
[
'0'
],
shape
=
x_shape_list
,
outputs
=
[
'3'
])
return
([
node
,
node2
],
[
x
,
x_shape
],
[
y
,
y2
],
[
helper
.
make_tensor
(
'1'
,
TensorProto
.
INT64
,
[
2
],
[
3
,
8
])])
...
...
@@ -4144,10 +4037,8 @@ def reshape_non_standard_test():
perm
=
[
0
,
2
,
1
],
)
res
=
onnx
.
helper
.
make_node
(
'Reshape'
,
inputs
=
[
'trans_x'
],
outputs
=
[
'y'
],
shape
=
[
4
,
3
,
2
])
res
=
onnx
.
helper
.
make_node
(
'Reshape'
,
inputs
=
[
'trans_x'
],
outputs
=
[
'y'
],
shape
=
[
4
,
3
,
2
])
return
([
trans
,
res
],
[
x
],
[
y
])
...
...
@@ -4155,10 +4046,11 @@ def reshape_non_standard_test():
@
onnx_test
def
resize_downsample_f_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
0.6
,
0.6
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
4
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[])
...
...
@@ -4177,20 +4069,22 @@ def resize_downsample_f_test():
@
onnx_test
def
resize_downsample_c_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
0.6
,
0.6
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
4
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
1
,
2
])
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
coordinate_transformation_mode
=
'asymmetric'
,
mode
=
'nearest'
,
nearest_mode
=
'ceil'
)
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
coordinate_transformation_mode
=
'asymmetric'
,
mode
=
'nearest'
,
nearest_mode
=
'ceil'
)
return
([
node
],
[
X
],
[
Y
],
[
scale_tensor
])
...
...
@@ -4198,18 +4092,17 @@ def resize_downsample_c_test():
@
onnx_test
def
resize_downsample_linear_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
0.6
,
0.5
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
4
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'linear'
)
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'linear'
)
return
([
node
],
[
X
],
[
Y
],
[
scale_tensor
])
...
...
@@ -4217,25 +4110,25 @@ def resize_downsample_linear_test():
@
onnx_test
def
resize_nonstd_input_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
0.6
,
0.6
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
4
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
1
,
2
])
trn
=
onnx
.
helper
.
make_node
(
'Transpose'
,
inputs
=
[
'X'
],
outputs
=
[
'TX'
],
perm
=
[
0
,
1
,
3
,
2
])
trn
=
onnx
.
helper
.
make_node
(
'Transpose'
,
inputs
=
[
'X'
],
outputs
=
[
'TX'
],
perm
=
[
0
,
1
,
3
,
2
])
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'TX'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
coordinate_transformation_mode
=
'asymmetric'
,
mode
=
'nearest'
,
nearest_mode
=
'ceil'
)
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'TX'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
coordinate_transformation_mode
=
'asymmetric'
,
mode
=
'nearest'
,
nearest_mode
=
'ceil'
)
return
([
trn
,
node
],
[
X
],
[
Y
],
[
scale_tensor
])
...
...
@@ -4243,11 +4136,11 @@ def resize_nonstd_input_test():
@
onnx_test
def
resize_outsize_test
():
out_lens
=
np
.
array
([
1
,
1
,
4
,
6
],
dtype
=
np
.
int64
)
out_lens_tensor
=
helper
.
make_tensor
(
name
=
'out_lens'
,
data_type
=
TensorProto
.
INT64
,
dims
=
out_lens
.
shape
,
vals
=
out_lens
.
flatten
().
asty
pe
(
np
.
int64
))
out_lens_tensor
=
helper
.
make_tensor
(
name
=
'out_lens'
,
data_type
=
TensorProto
.
INT64
,
dims
=
out_lens
.
sha
pe
,
vals
=
out_lens
.
flatten
().
astype
(
np
.
int64
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
4
,
6
])
...
...
@@ -4266,11 +4159,11 @@ def resize_outsize_test():
@
onnx_test
def
resize_upsample_linear_ac_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
2.0
,
2.0
],
dtype
=
np
.
float32
)
scales_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
asty
pe
(
np
.
float32
))
scales_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
sha
pe
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[])
...
...
@@ -4287,18 +4180,16 @@ def resize_upsample_linear_ac_test():
@
onnx_test
def
resize_upsample_linear_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
2.0
,
2.0
],
dtype
=
np
.
float32
)
scales_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
asty
pe
(
np
.
float32
))
scales_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
sha
pe
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'linear'
)
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'linear'
)
return
([
node
],
[
X
],
[
Y
],
[
scales_tensor
])
...
...
@@ -4306,18 +4197,17 @@ def resize_upsample_linear_test():
@
onnx_test
def
resize_upsample_pf_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
2.0
,
3.0
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
4
,
6
])
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'nearest'
)
node
=
onnx
.
helper
.
make_node
(
'Resize'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'nearest'
)
return
([
node
],
[
X
],
[
Y
],
[
scale_tensor
])
...
...
@@ -4325,10 +4215,11 @@ def resize_upsample_pf_test():
@
onnx_test
def
resize_upsample_pc_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
2.0
,
1.5
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
4
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
4
,
6
])
...
...
@@ -4352,9 +4243,8 @@ def roialign_default_test():
bi
=
helper
.
make_tensor_value_info
(
'batch_ind'
,
TensorProto
.
INT64
,
[
8
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
8
,
4
,
1
,
1
])
node
=
onnx
.
helper
.
make_node
(
'RoiAlign'
,
inputs
=
[
'x'
,
'rois'
,
'batch_ind'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'RoiAlign'
,
inputs
=
[
'x'
,
'rois'
,
'batch_ind'
],
outputs
=
[
'y'
])
return
([
node
],
[
x
,
roi
,
bi
],
[
y
])
...
...
@@ -4450,10 +4340,11 @@ def scatternd_add_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
2
])
node
=
onnx
.
helper
.
make_node
(
'ScatterND'
,
inputs
=
[
'data'
,
'indices'
,
'updates'
],
outputs
=
[
'output'
],
reduction
=
"add"
)
node
=
onnx
.
helper
.
make_node
(
'ScatterND'
,
inputs
=
[
'data'
,
'indices'
,
'updates'
],
outputs
=
[
'output'
],
reduction
=
"add"
)
return
([
node
],
[
data
,
indices
,
updates
],
[
output
])
...
...
@@ -4468,10 +4359,11 @@ def scatternd_mul_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
2
])
node
=
onnx
.
helper
.
make_node
(
'ScatterND'
,
inputs
=
[
'data'
,
'indices'
,
'updates'
],
outputs
=
[
'output'
],
reduction
=
"mul"
)
node
=
onnx
.
helper
.
make_node
(
'ScatterND'
,
inputs
=
[
'data'
,
'indices'
,
'updates'
],
outputs
=
[
'output'
],
reduction
=
"mul"
)
return
([
node
],
[
data
,
indices
,
updates
],
[
output
])
...
...
@@ -4486,9 +4378,8 @@ def scatternd_test():
output
=
helper
.
make_tensor_value_info
(
'output'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
2
])
node
=
onnx
.
helper
.
make_node
(
'ScatterND'
,
inputs
=
[
'data'
,
'indices'
,
'updates'
],
outputs
=
[
'output'
])
node
=
onnx
.
helper
.
make_node
(
'ScatterND'
,
inputs
=
[
'data'
,
'indices'
,
'updates'
],
outputs
=
[
'output'
])
return
([
node
],
[
data
,
indices
,
updates
],
[
output
])
...
...
@@ -4498,11 +4389,8 @@ def selu_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
DOUBLE
,
[
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
DOUBLE
,
[
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'Selu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.3
,
gamma
=
0.5
)
node
=
onnx
.
helper
.
make_node
(
'Selu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
0.3
,
gamma
=
0.5
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4528,10 +4416,11 @@ def shape_gather_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
7
,
3
,
10
])
z
=
helper
.
make_tensor_value_info
(
'z'
,
TensorProto
.
FLOAT
,
[
1
])
value_tensor
=
helper
.
make_tensor
(
name
=
'const_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
values
.
shape
,
vals
=
values
.
flatten
().
astype
(
int
))
value_tensor
=
helper
.
make_tensor
(
name
=
'const_tensor'
,
data_type
=
TensorProto
.
INT32
,
dims
=
values
.
shape
,
vals
=
values
.
flatten
().
astype
(
int
))
node_const
=
onnx
.
helper
.
make_node
(
'Constant'
,
...
...
@@ -4651,12 +4540,13 @@ def slice_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
3
,
2
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
1
,
2
])
node
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
0
],
ends
=
[
2
,
2
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
0
],
ends
=
[
2
,
2
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4666,29 +4556,26 @@ def slice_3arg_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
2
,
5
])
start
=
np
.
array
([
0
,
0
])
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
end
=
np
.
array
([
2
,
5
])
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
,
'arg_start'
,
'arg_end'
],
outputs
=
[
'1'
])
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
node
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
,
'arg_start'
,
'arg_end'
],
outputs
=
[
'1'
])
return
([
arg_start
,
arg_end
,
node
],
[
x
],
[
y
])
...
...
@@ -4696,44 +4583,40 @@ def slice_3arg_test():
@
onnx_test
def
slice_5arg_test
():
step
=
np
.
array
([
1
,
1
])
step_tensor
=
helper
.
make_tensor
(
name
=
"step"
,
data_type
=
TensorProto
.
INT32
,
dims
=
step
.
shape
,
vals
=
step
.
astype
(
int
))
arg_step
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_step'
],
value
=
step_tensor
)
step_tensor
=
helper
.
make_tensor
(
name
=
"step"
,
data_type
=
TensorProto
.
INT32
,
dims
=
step
.
shape
,
vals
=
step
.
astype
(
int
))
arg_step
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_step'
],
value
=
step_tensor
)
axis
=
np
.
array
([
-
1
,
-
2
])
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis
.
shape
,
vals
=
axis
.
astype
(
int
))
arg_axis
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_axis'
],
value
=
axis_tensor
)
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis
.
shape
,
vals
=
axis
.
astype
(
int
))
arg_axis
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_axis'
],
value
=
axis_tensor
)
end
=
np
.
array
([
-
1
,
-
1
])
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
start
=
np
.
array
([
-
5
,
-
3
])
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
4
,
2
])
...
...
@@ -4749,44 +4632,40 @@ def slice_5arg_test():
@
onnx_test
def
slice_5arg_reverse_test
():
step
=
np
.
array
([
-
1
,
1
])
step_tensor
=
helper
.
make_tensor
(
name
=
"step"
,
data_type
=
TensorProto
.
INT32
,
dims
=
step
.
shape
,
vals
=
step
.
astype
(
int
))
arg_step
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_step'
],
value
=
step_tensor
)
step_tensor
=
helper
.
make_tensor
(
name
=
"step"
,
data_type
=
TensorProto
.
INT32
,
dims
=
step
.
shape
,
vals
=
step
.
astype
(
int
))
arg_step
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_step'
],
value
=
step_tensor
)
axis
=
np
.
array
([
-
1
,
-
2
])
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis
.
shape
,
vals
=
axis
.
astype
(
int
))
arg_axis
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_axis'
],
value
=
axis_tensor
)
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis
.
shape
,
vals
=
axis
.
astype
(
int
))
arg_axis
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_axis'
],
value
=
axis_tensor
)
end
=
np
.
array
([
-
5
,
-
1
])
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
start
=
np
.
array
([
-
1
,
-
3
])
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
4
,
2
])
...
...
@@ -4802,44 +4681,40 @@ def slice_5arg_reverse_test():
@
onnx_test
def
slice_5arg_step_test
():
step
=
np
.
array
([
-
2
,
2
])
step_tensor
=
helper
.
make_tensor
(
name
=
"step"
,
data_type
=
TensorProto
.
INT32
,
dims
=
step
.
shape
,
vals
=
step
.
astype
(
int
))
arg_step
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_step'
],
value
=
step_tensor
)
step_tensor
=
helper
.
make_tensor
(
name
=
"step"
,
data_type
=
TensorProto
.
INT32
,
dims
=
step
.
shape
,
vals
=
step
.
astype
(
int
))
arg_step
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_step'
],
value
=
step_tensor
)
axis
=
np
.
array
([
-
1
,
-
2
])
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis
.
shape
,
vals
=
axis
.
astype
(
int
))
arg_axis
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_axis'
],
value
=
axis_tensor
)
axis_tensor
=
helper
.
make_tensor
(
name
=
"axis"
,
data_type
=
TensorProto
.
INT32
,
dims
=
axis
.
shape
,
vals
=
axis
.
astype
(
int
))
arg_axis
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_axis'
],
value
=
axis_tensor
)
end
=
np
.
array
([
-
5
,
-
1
])
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
end_tensor
=
helper
.
make_tensor
(
name
=
"end"
,
data_type
=
TensorProto
.
INT32
,
dims
=
end
.
shape
,
vals
=
end
.
astype
(
int
))
arg_end
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_end'
],
value
=
end_tensor
)
start
=
np
.
array
([
-
1
,
-
3
])
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
start_tensor
=
helper
.
make_tensor
(
name
=
"start"
,
data_type
=
TensorProto
.
INT32
,
dims
=
start
.
shape
,
vals
=
start
.
astype
(
int
))
arg_start
=
helper
.
make_node
(
"Constant"
,
inputs
=
[],
outputs
=
[
'arg_start'
],
value
=
start_tensor
)
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
5
,
5
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
4
,
2
])
...
...
@@ -4857,12 +4732,13 @@ def slice_max_end_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
10
,
20
])
y
=
helper
.
make_tensor_value_info
(
'1'
,
TensorProto
.
FLOAT
,
[
9
,
17
])
node
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
2
],
ends
=
[
3000000000
,
-
1
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
2
],
ends
=
[
3000000000
,
-
1
],
outputs
=
[
'1'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -4882,12 +4758,13 @@ def softmax_nonstd_input_test():
x
=
helper
.
make_tensor_value_info
(
'0'
,
TensorProto
.
FLOAT
,
[
6
,
8
])
y
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
3
,
4
])
node0
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
0
],
ends
=
[
4
,
4
],
outputs
=
[
'1'
])
node0
=
onnx
.
helper
.
make_node
(
'Slice'
,
inputs
=
[
'0'
],
axes
=
[
0
,
1
],
starts
=
[
1
,
0
],
ends
=
[
4
,
4
],
outputs
=
[
'1'
])
node1
=
onnx
.
helper
.
make_node
(
'Softmax'
,
inputs
=
[
'1'
],
outputs
=
[
'2'
])
...
...
@@ -4956,11 +4833,12 @@ def split_test():
y2
=
helper
.
make_tensor_value_info
(
'y2'
,
TensorProto
.
FLOAT
,
[
10
,
4
])
y3
=
helper
.
make_tensor_value_info
(
'y3'
,
TensorProto
.
FLOAT
,
[
10
,
4
])
node
=
onnx
.
helper
.
make_node
(
'Split'
,
inputs
=
[
'x'
],
outputs
=
[
'y1'
,
'y2'
,
'y3'
],
axis
=
1
,
split
=
[
7
,
4
,
4
])
node
=
onnx
.
helper
.
make_node
(
'Split'
,
inputs
=
[
'x'
],
outputs
=
[
'y1'
,
'y2'
,
'y3'
],
axis
=
1
,
split
=
[
7
,
4
,
4
])
return
([
node
],
[
x
],
[
y1
,
y2
,
y3
])
...
...
@@ -4999,14 +4877,14 @@ def squeeze_axes_input_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
1
,
5
,
1
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
5
])
axes
=
np
.
array
([
1
,
3
],
dtype
=
np
.
int64
)
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
node
=
onnx
.
helper
.
make_node
(
'Squeeze'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'Squeeze'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
])
return
([
node
],
[
x
],
[
y
],
[
axes_tensor
])
...
...
@@ -5016,14 +4894,14 @@ def squeeze_empty_axes_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
3
,
1
,
5
,
1
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
3
,
5
])
axes
=
np
.
array
([],
dtype
=
np
.
int64
)
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
axes_tensor
=
helper
.
make_tensor
(
name
=
"axes"
,
data_type
=
TensorProto
.
INT64
,
dims
=
axes
.
shape
,
vals
=
axes
.
astype
(
np
.
int64
))
node
=
onnx
.
helper
.
make_node
(
'Squeeze'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'Squeeze'
,
inputs
=
[
'x'
,
'axes'
],
outputs
=
[
'y'
])
return
([
node
],
[
x
],
[
y
],
[
axes_tensor
])
...
...
@@ -5035,15 +4913,11 @@ def squeeze_unsqueeze_test():
y
=
helper
.
make_tensor_value_info
(
'2'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
3
,
1
,
2
,
1
])
node
=
onnx
.
helper
.
make_node
(
'Squeeze'
,
inputs
=
[
'0'
],
axes
=
[
0
,
2
,
3
,
5
],
outputs
=
[
'1'
])
node
=
onnx
.
helper
.
make_node
(
'Squeeze'
,
inputs
=
[
'0'
],
axes
=
[
0
,
2
,
3
,
5
],
outputs
=
[
'1'
])
node2
=
onnx
.
helper
.
make_node
(
'Unsqueeze'
,
inputs
=
[
'1'
],
axes
=
[
0
,
1
,
3
,
5
],
outputs
=
[
'2'
])
node2
=
onnx
.
helper
.
make_node
(
'Unsqueeze'
,
inputs
=
[
'1'
],
axes
=
[
0
,
1
,
3
,
5
],
outputs
=
[
'2'
])
return
([
node
,
node2
],
[
x
],
[
y
])
...
...
@@ -5074,10 +4948,11 @@ def sub_scalar_test():
arg_out
=
helper
.
make_tensor_value_info
(
'out'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
,
5
])
values_tensor
=
helper
.
make_tensor
(
name
=
'const'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
values
.
reshape
(()).
shape
,
vals
=
values
.
flatten
().
astype
(
float
))
values_tensor
=
helper
.
make_tensor
(
name
=
'const'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
values
.
reshape
(()).
shape
,
vals
=
values
.
flatten
().
astype
(
float
))
arg_const
=
onnx
.
helper
.
make_node
(
'Constant'
,
...
...
@@ -5134,78 +5009,74 @@ def sum_test():
@
onnx_test
def
sum_type_test
():
valb
=
np
.
array
([
1
,
0
])
t_bool
=
helper
.
make_tensor
(
name
=
"bool"
,
data_type
=
TensorProto
.
BOOL
,
dims
=
valb
.
shape
,
vals
=
valb
.
astype
(
np
.
bool
))
t_bool
=
helper
.
make_tensor
(
name
=
"bool"
,
data_type
=
TensorProto
.
BOOL
,
dims
=
valb
.
shape
,
vals
=
valb
.
astype
(
np
.
bool
))
val
=
np
.
array
([
1
,
1
])
t_int8
=
helper
.
make_tensor
(
name
=
"int8"
,
data_type
=
TensorProto
.
INT8
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
int8
))
t_uint8
=
helper
.
make_tensor
(
name
=
"uint8"
,
data_type
=
TensorProto
.
UINT8
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint8
))
t_uint16
=
helper
.
make_tensor
(
name
=
"uint16"
,
data_type
=
TensorProto
.
UINT16
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint16
))
t_uint32
=
helper
.
make_tensor
(
name
=
"uint32"
,
data_type
=
TensorProto
.
UINT32
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint32
))
t_uint64
=
helper
.
make_tensor
(
name
=
"uint64"
,
data_type
=
TensorProto
.
UINT64
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint64
))
t_double
=
helper
.
make_tensor
(
name
=
"double"
,
data_type
=
TensorProto
.
DOUBLE
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
float64
))
t_int8
=
helper
.
make_tensor
(
name
=
"int8"
,
data_type
=
TensorProto
.
INT8
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
int8
))
t_uint8
=
helper
.
make_tensor
(
name
=
"uint8"
,
data_type
=
TensorProto
.
UINT8
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint8
))
t_uint16
=
helper
.
make_tensor
(
name
=
"uint16"
,
data_type
=
TensorProto
.
UINT16
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint16
))
t_uint32
=
helper
.
make_tensor
(
name
=
"uint32"
,
data_type
=
TensorProto
.
UINT32
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint32
))
t_uint64
=
helper
.
make_tensor
(
name
=
"uint64"
,
data_type
=
TensorProto
.
UINT64
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
uint64
))
t_double
=
helper
.
make_tensor
(
name
=
"double"
,
data_type
=
TensorProto
.
DOUBLE
,
dims
=
val
.
shape
,
vals
=
val
.
astype
(
np
.
float64
))
valr
=
np
.
array
([
1.5
,
2.0
])
t_raw
=
helper
.
make_tensor
(
name
=
"raw"
,
data_type
=
TensorProto
.
DOUBLE
,
dims
=
valr
.
shape
,
vals
=
valr
.
tobytes
(),
raw
=
True
)
n_bool
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'bool'
],
outputs
=
[
'o_bool'
],
to
=
11
)
n_int8
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'int8'
],
outputs
=
[
'o_int8'
],
to
=
11
)
n_uint8
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint8'
],
outputs
=
[
'o_uint8'
],
to
=
11
)
n_uint16
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint16'
],
outputs
=
[
'o_uint16'
],
to
=
11
)
n_uint32
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint32'
],
outputs
=
[
'o_uint32'
],
to
=
11
)
n_uint64
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint64'
],
outputs
=
[
'o_uint64'
],
to
=
11
)
t_raw
=
helper
.
make_tensor
(
name
=
"raw"
,
data_type
=
TensorProto
.
DOUBLE
,
dims
=
valr
.
shape
,
vals
=
valr
.
tobytes
(),
raw
=
True
)
n_bool
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'bool'
],
outputs
=
[
'o_bool'
],
to
=
11
)
n_int8
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'int8'
],
outputs
=
[
'o_int8'
],
to
=
11
)
n_uint8
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint8'
],
outputs
=
[
'o_uint8'
],
to
=
11
)
n_uint16
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint16'
],
outputs
=
[
'o_uint16'
],
to
=
11
)
n_uint32
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint32'
],
outputs
=
[
'o_uint32'
],
to
=
11
)
n_uint64
=
onnx
.
helper
.
make_node
(
'Cast'
,
inputs
=
[
'uint64'
],
outputs
=
[
'o_uint64'
],
to
=
11
)
node
=
onnx
.
helper
.
make_node
(
'Sum'
,
...
...
@@ -5218,11 +5089,11 @@ def sum_type_test():
y
=
helper
.
make_tensor_value_info
(
'out'
,
TensorProto
.
DOUBLE
,
[
2
])
return
([
n_bool
,
n_int8
,
n_uint8
,
n_uint16
,
n_uint32
,
n_uint64
,
node
],
[],
[
y
],
[
t_bool
,
t_int8
,
t_uint8
,
t_uint16
,
t_uint32
,
t_uint64
,
t_double
,
t_raw
])
return
([
n_bool
,
n_int8
,
n_uint8
,
n_uint16
,
n_uint32
,
n_uint64
,
node
],
[],
[
y
],
[
t_bool
,
t_int8
,
t_uint8
,
t_uint16
,
t_uint32
,
t_uint64
,
t_double
,
t_raw
])
@
onnx_test
...
...
@@ -5258,9 +5129,8 @@ def thresholdedrelu_default_test():
x
=
helper
.
make_tensor_value_info
(
'x'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
3
])
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
3
])
node
=
onnx
.
helper
.
make_node
(
'ThresholdedRelu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
])
node
=
onnx
.
helper
.
make_node
(
'ThresholdedRelu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
])
return
([
node
],
[
x
],
[
y
])
...
...
@@ -5271,10 +5141,8 @@ def thresholdedrelu_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
3
])
alpha
=
3.0
node
=
onnx
.
helper
.
make_node
(
'ThresholdedRelu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
alpha
)
node
=
onnx
.
helper
.
make_node
(
'ThresholdedRelu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
alpha
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -5285,10 +5153,8 @@ def thresholdedrelu_int_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
INT32
,
[
2
,
2
,
3
])
alpha
=
3.0
node
=
onnx
.
helper
.
make_node
(
'ThresholdedRelu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
alpha
)
node
=
onnx
.
helper
.
make_node
(
'ThresholdedRelu'
,
inputs
=
[
'x'
],
outputs
=
[
'y'
],
alpha
=
alpha
)
return
([
node
],
[
x
],
[
y
])
...
...
@@ -5324,10 +5190,8 @@ def topk_attrk_test():
ind
=
helper
.
make_tensor_value_info
(
'indices'
,
TensorProto
.
INT64
,
[
2
,
2
,
3
,
2
])
node
=
onnx
.
helper
.
make_node
(
'TopK'
,
inputs
=
[
'data'
],
outputs
=
[
'val'
,
'indices'
],
k
=
2
)
node
=
onnx
.
helper
.
make_node
(
'TopK'
,
inputs
=
[
'data'
],
outputs
=
[
'val'
,
'indices'
],
k
=
2
)
return
([
node
],
[
x
],
[
val
,
ind
])
...
...
@@ -5339,16 +5203,18 @@ def topk_neg_axis_test():
ind
=
helper
.
make_tensor_value_info
(
'indices'
,
TensorProto
.
INT64
,
[
3
,
3
,
5
,
6
])
k_tensor
=
helper
.
make_tensor
(
name
=
'k'
,
data_type
=
TensorProto
.
INT64
,
dims
=
k
.
shape
,
vals
=
k
.
astype
(
np
.
int64
))
k_tensor
=
helper
.
make_tensor
(
name
=
'k'
,
data_type
=
TensorProto
.
INT64
,
dims
=
k
.
shape
,
vals
=
k
.
astype
(
np
.
int64
))
node
=
onnx
.
helper
.
make_node
(
'TopK'
,
inputs
=
[
'data'
,
'k'
],
outputs
=
[
'val'
,
'indices'
],
axis
=-
2
,
sorted
=
0
)
node
=
onnx
.
helper
.
make_node
(
'TopK'
,
inputs
=
[
'data'
,
'k'
],
outputs
=
[
'val'
,
'indices'
],
axis
=-
2
,
sorted
=
0
)
return
([
node
],
[
x
],
[
val
,
ind
],
[
k_tensor
])
...
...
@@ -5360,16 +5226,18 @@ def topk_test():
ind
=
helper
.
make_tensor_value_info
(
'indices'
,
TensorProto
.
INT64
,
[
2
,
4
,
3
,
2
])
k_tensor
=
helper
.
make_tensor
(
name
=
'k'
,
data_type
=
TensorProto
.
INT64
,
dims
=
k
.
shape
,
vals
=
k
.
astype
(
np
.
int64
))
k_tensor
=
helper
.
make_tensor
(
name
=
'k'
,
data_type
=
TensorProto
.
INT64
,
dims
=
k
.
shape
,
vals
=
k
.
astype
(
np
.
int64
))
node
=
onnx
.
helper
.
make_node
(
'TopK'
,
inputs
=
[
'data'
,
'k'
],
outputs
=
[
'val'
,
'indices'
],
largest
=
0
,
axis
=
1
)
node
=
onnx
.
helper
.
make_node
(
'TopK'
,
inputs
=
[
'data'
,
'k'
],
outputs
=
[
'val'
,
'indices'
],
largest
=
0
,
axis
=
1
)
return
([
node
],
[
x
],
[
val
,
ind
],
[
k_tensor
])
...
...
@@ -5431,10 +5299,11 @@ def transpose_gather_test():
perm
=
[
0
,
2
,
1
,
3
],
)
ti
=
onnx
.
helper
.
make_node
(
'Transpose'
,
inputs
=
[
'indices'
],
outputs
=
[
'tindices'
],
perm
=
[
0
,
2
,
1
,
3
])
ti
=
onnx
.
helper
.
make_node
(
'Transpose'
,
inputs
=
[
'indices'
],
outputs
=
[
'tindices'
],
perm
=
[
0
,
2
,
1
,
3
])
node
=
onnx
.
helper
.
make_node
(
'Gather'
,
...
...
@@ -5481,10 +5350,8 @@ def unknown_aten_test():
a
=
helper
.
make_tensor_value_info
(
'3'
,
TensorProto
.
FLOAT
,
[
2
,
3
,
4
,
5
])
node
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
],
operator
=
'unknown'
)
node
=
onnx
.
helper
.
make_node
(
'ATen'
,
inputs
=
[
'0'
,
'1'
],
outputs
=
[
'2'
],
operator
=
'unknown'
)
return
([
node
],
[
x
,
y
],
[
a
])
...
...
@@ -5492,18 +5359,16 @@ def unknown_aten_test():
@
onnx_test
def
upsample_linear_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
2.0
,
2.0
],
dtype
=
np
.
float32
)
scales_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
asty
pe
(
np
.
float32
))
scales_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
sha
pe
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[])
node
=
onnx
.
helper
.
make_node
(
'Upsample'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'linear'
)
node
=
onnx
.
helper
.
make_node
(
'Upsample'
,
inputs
=
[
'X'
,
''
,
'scales'
],
outputs
=
[
'Y'
],
mode
=
'linear'
)
return
([
node
],
[
X
],
[
Y
],
[
scales_tensor
])
...
...
@@ -5511,10 +5376,11 @@ def upsample_linear_test():
@
onnx_test
def
upsample_test
():
scales
=
np
.
array
([
1.0
,
1.0
,
2.0
,
3.0
],
dtype
=
np
.
float32
)
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
scale_tensor
=
helper
.
make_tensor
(
name
=
'scales'
,
data_type
=
TensorProto
.
FLOAT
,
dims
=
scales
.
shape
,
vals
=
scales
.
flatten
().
astype
(
np
.
float32
))
X
=
helper
.
make_tensor_value_info
(
'X'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
2
,
2
])
Y
=
helper
.
make_tensor_value_info
(
'Y'
,
TensorProto
.
FLOAT
,
[
1
,
1
,
4
,
6
])
...
...
@@ -5559,8 +5425,7 @@ def where_test():
y
=
helper
.
make_tensor_value_info
(
'y'
,
TensorProto
.
FLOAT
,
[
2
,
1
,
2
,
2
])
z
=
helper
.
make_tensor_value_info
(
'z'
,
TensorProto
.
FLOAT
,
[
2
,
2
,
2
,
2
])
node
=
onnx
.
helper
.
make_node
(
'Where'
,
inputs
=
[
'c'
,
'x'
,
'y'
],
outputs
=
[
'z'
])
node
=
onnx
.
helper
.
make_node
(
'Where'
,
inputs
=
[
'c'
,
'x'
,
'y'
],
outputs
=
[
'z'
])
return
([
node
],
[
c
,
x
,
y
],
[
z
])
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment