Unverified Commit dae94657 authored by Chris Austen's avatar Chris Austen Committed by GitHub
Browse files

Merge branch 'develop' into jit-reduce-reg

parents b013d991 56c43445
batch_norm_invalid_rank_test:
7
batch_norm_rank_2_test:
J
x
scale
bias
mean
variancey"BatchNormalizationbatch_norm_invalid_rank_testZ
variancey"BatchNormalization*
epsilon75batch_norm_rank_2_testZ
x


Z

Z
scale

Z
Z
bias

Z
Z
mean

Z
Z
variance

b
b
y


B
\ No newline at end of file

B
\ No newline at end of file
external_constant_test:¡
v0"Constant*g
value*[B const_tensorj)
locationexternal_constant_test.weightj
offset48j
length24p external_constant_testb
0

B
\ No newline at end of file
......@@ -28,28 +28,37 @@ import numpy as np
import onnx
from onnx import helper
from onnx import TensorProto
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])
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__)
onnx.save(model_def, '{}.onnx'.format(op_test.__name__))
return run_test
@onnx_test
from onnx.numpy_helper import from_array
def onnx_test(external_data=False):
def create_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])
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__)
onnx.save_model(model_def,
'{}.onnx'.format(op_test.__name__),
save_as_external_data=external_data,
location='{}.weight'.format(op_test.__name__),
size_threshold=0,
convert_attribute=True)
return run_test
return create_onnx_test
@onnx_test()
def acos_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -63,7 +72,7 @@ def acos_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def acosh_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -77,7 +86,7 @@ def acosh_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def add_bcast_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 4])
......@@ -92,7 +101,7 @@ def add_bcast_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def add_fp16_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [1])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [1])
......@@ -115,7 +124,7 @@ def add_fp16_test():
])
@onnx_test
@onnx_test()
def add_scalar_test():
x = helper.make_tensor_value_info('0', TensorProto.UINT8, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.UINT8, [])
......@@ -126,7 +135,7 @@ def add_scalar_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
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])
......@@ -140,7 +149,21 @@ def argmax_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def argmax_dyn_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [None, 4, 5, 6])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [None, 4, 6])
node = onnx.helper.make_node('ArgMax',
inputs=['x'],
outputs=['y'],
axis=2,
keepdims=0)
return ([node], [x], [y])
@onnx_test()
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])
......@@ -154,7 +177,7 @@ def argmin_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def asin_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -168,7 +191,7 @@ def asin_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def asinh_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -182,7 +205,7 @@ def asinh_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def atan_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -196,7 +219,7 @@ def atan_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def atanh_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -210,7 +233,7 @@ def atanh_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -223,7 +246,7 @@ def averagepool_1d_test():
return ([node], [x], [out])
@onnx_test
@onnx_test()
def averagepool_3d_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 5, 5, 5])
out = helper.make_tensor_value_info('1', TensorProto.FLOAT,
......@@ -237,7 +260,65 @@ def averagepool_3d_test():
return ([node], [x], [out])
@onnx_test
@onnx_test()
def averagepool_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[None, 3, 5, 5, 5])
out = helper.make_tensor_value_info('1', TensorProto.FLOAT,
[None, 3, 3, 3, 3])
node = onnx.helper.make_node('AveragePool',
inputs=['0'],
outputs=['1'],
kernel_shape=[3, 3, 3])
return ([node], [x], [out])
@onnx_test()
def averagepool_dyn_autopad_error_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [None, 1, 5, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [None, 1, 5, 5])
node = onnx.helper.make_node('AveragePool',
inputs=['x'],
outputs=['y'],
kernel_shape=[2, 2],
auto_pad='SAME_LOWER')
return ([node], [x], [y])
@onnx_test()
def averagepool_dyn_asym_padding_error_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [None, 1, 5, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [None, 1, 3, 3])
node = onnx.helper.make_node('AveragePool',
inputs=['x'],
outputs=['y'],
kernel_shape=[2, 2],
strides=[2, 2],
pads=[0, 0, 1, 1])
return ([node], [x], [y])
@onnx_test()
def averagepool_dyn_cip_error_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [None, 1, 5, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [None, 1, 1, 1])
node = onnx.helper.make_node('AveragePool',
inputs=['x'],
outputs=['y'],
kernel_shape=[2, 2],
count_include_pad=1)
return ([node], [x], [y])
@onnx_test()
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])
......@@ -253,7 +334,7 @@ def averagepool_notset_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -270,7 +351,7 @@ def averagepool_nt_cip_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -284,7 +365,7 @@ def averagepool_same_lower_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -299,7 +380,7 @@ def averagepool_sl_cip_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -313,7 +394,7 @@ def averagepool_same_upper_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def batch_norm_flat_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
scale = helper.make_tensor_value_info('scale', TensorProto.FLOAT, [1])
......@@ -331,7 +412,25 @@ def batch_norm_flat_test():
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test
@onnx_test()
def batch_norm_rank_2_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 5])
scale = helper.make_tensor_value_info('scale', TensorProto.FLOAT, [5])
bias = helper.make_tensor_value_info('bias', TensorProto.FLOAT, [5])
mean = helper.make_tensor_value_info('mean', TensorProto.FLOAT, [5])
var = helper.make_tensor_value_info('variance', TensorProto.FLOAT, [5])
out = helper.make_tensor_value_info('y', TensorProto.FLOAT, [2, 5])
node = onnx.helper.make_node(
'BatchNormalization',
inputs=['x', 'scale', 'bias', 'mean', 'variance'],
outputs=['y'],
epsilon=1e-6)
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test()
def batch_norm_1d_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16, [2, 3, 4])
scale = helper.make_tensor_value_info('scale', TensorProto.FLOAT, [3])
......@@ -348,7 +447,7 @@ def batch_norm_1d_test():
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test
@onnx_test()
def batch_norm_2d_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 3, 4, 4])
scale = helper.make_tensor_value_info('scale', TensorProto.FLOAT, [3])
......@@ -365,7 +464,7 @@ def batch_norm_2d_test():
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test
@onnx_test()
def batch_norm_3d_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16,
[2, 2, 2, 2, 2])
......@@ -385,24 +484,7 @@ def batch_norm_3d_test():
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test
def batch_norm_invalid_rank_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [8, 8])
scale = helper.make_tensor_value_info('scale', TensorProto.FLOAT, [8])
bias = helper.make_tensor_value_info('bias', TensorProto.FLOAT, [8])
mean = helper.make_tensor_value_info('mean', TensorProto.FLOAT, [8])
var = helper.make_tensor_value_info('variance', TensorProto.FLOAT, [8])
out = helper.make_tensor_value_info('y', TensorProto.FLOAT, [8, 8])
node = onnx.helper.make_node(
'BatchNormalization',
inputs=['x', 'scale', 'bias', 'mean', 'variance'],
outputs=['y'])
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test
@onnx_test()
def batch_norm_invalid_bias_rank_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 3, 4, 4])
scale = helper.make_tensor_value_info('scale', TensorProto.FLOAT, [3])
......@@ -419,7 +501,75 @@ def batch_norm_invalid_bias_rank_test():
return ([node], [x, scale, bias, mean, var], [out])
@onnx_test
@onnx_test()
def binary_dyn_brcst_prelu_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[None, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [4, 5])
arg_out = helper.make_tensor_value_info('out', TensorProto.FLOAT,
[None, 3, 4, 5])
node = onnx.helper.make_node(
'PRelu',
inputs=['0', '1'],
outputs=['out'],
)
return ([node], [arg0, arg1], [arg_out])
@onnx_test()
def binary_dyn_brcst_add_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT,
[None, 3, 4, 5])
arg_out = helper.make_tensor_value_info('out', TensorProto.FLOAT,
[None, 3, 4, 5])
node = onnx.helper.make_node(
'Add',
inputs=['0', '1'],
outputs=['out'],
)
return ([node], [arg0, arg1], [arg_out])
@onnx_test()
def binary_dyn_brcst_attr_error_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT,
[None, 3, 4, 5])
arg_out = helper.make_tensor_value_info('out', TensorProto.FLOAT,
[None, 3, 4, 5])
node = onnx.helper.make_node('Add',
inputs=['0', '1'],
outputs=['out'],
broadcast=1,
axis=1)
return ([node], [arg0, arg1], [arg_out])
@onnx_test()
def binary_dyn_brcst_mul_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[None, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [4, 1])
arg_out = helper.make_tensor_value_info('out', TensorProto.FLOAT,
[None, 3, 4, 5])
node = onnx.helper.make_node(
'Mul',
inputs=['0', '1'],
outputs=['out'],
)
return ([node], [arg0, arg1], [arg_out])
@onnx_test()
def cast_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -429,7 +579,7 @@ def cast_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def ceil_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -443,7 +593,7 @@ def ceil_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def celu_alpha_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3])
......@@ -456,7 +606,7 @@ def celu_alpha_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def celu_default_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 3])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [2, 3])
......@@ -466,7 +616,7 @@ def celu_default_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -479,7 +629,7 @@ def celu_verify_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def celu_wrong_type_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16, [2, 3])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT16, [2, 3])
......@@ -489,7 +639,7 @@ def celu_wrong_type_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -502,7 +652,7 @@ def celu_zero_alpha_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def clip_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -516,7 +666,7 @@ def clip_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def clip_test_op11():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -531,7 +681,7 @@ def clip_test_op11():
return ([node], [x], [y], [min_val, max_val])
@onnx_test
@onnx_test()
def clip_test_op11_max_only():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -545,7 +695,7 @@ def clip_test_op11_max_only():
return ([node], [x], [y], [max_val])
@onnx_test
@onnx_test()
def clip_test_op11_min_only():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -557,7 +707,7 @@ def clip_test_op11_min_only():
return ([node], [x], [y], [min_val])
@onnx_test
@onnx_test()
def clip_test_op11_no_args():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -567,7 +717,7 @@ def clip_test_op11_no_args():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def clip_test_op11_no_args1():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -577,7 +727,7 @@ def clip_test_op11_no_args1():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def clip_test_args_type_mismatch():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 3])
......@@ -593,7 +743,7 @@ def clip_test_args_type_mismatch():
return ([node], [x], [y], [min_val, max_val])
@onnx_test
@onnx_test()
def concat_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 4, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [7, 4, 3])
......@@ -609,7 +759,7 @@ def concat_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def constant_test():
x = np.array([0, 1, 2])
y = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
......@@ -629,7 +779,7 @@ def constant_test():
return ([node], [], [y])
@onnx_test
@onnx_test()
def constant_fill_test():
value = helper.make_tensor_value_info('value', TensorProto.FLOAT, [2, 3])
......@@ -646,7 +796,7 @@ def constant_fill_test():
return ([node], [], [value])
@onnx_test
@onnx_test()
def constant_fill_input_as_shape_test():
np_shape = np.array([2, 3])
value = helper.make_tensor_value_info('value', TensorProto.FLOAT, [2, 3])
......@@ -675,7 +825,7 @@ def constant_fill_input_as_shape_test():
return ([const_shape_node, node], [], [value])
@onnx_test
@onnx_test()
def constant_scalar_test():
x = np.array([1])
y = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1])
......@@ -695,7 +845,7 @@ def constant_scalar_test():
return ([node], [], [y])
@onnx_test
@onnx_test()
def constant_empty_scalar_int64_test():
x = np.array([]).astype(np.int64)
y = helper.make_tensor_value_info('0', TensorProto.INT64, [0])
......@@ -715,7 +865,7 @@ def constant_empty_scalar_int64_test():
return ([node], [], [y])
@onnx_test
@onnx_test()
def constant_one_val_int64_test():
x = np.array([1]).astype(np.int64)
y = helper.make_tensor_value_info('0', TensorProto.INT64, [0])
......@@ -735,7 +885,7 @@ def constant_one_val_int64_test():
return ([node], [], [y])
@onnx_test
@onnx_test()
def const_of_shape_empty_input_test():
tensor_val = onnx.helper.make_tensor('value', onnx.TensorProto.INT64, [1],
[10])
......@@ -762,7 +912,7 @@ def const_of_shape_empty_input_test():
return ([shape_const, node], [], [y])
@onnx_test
@onnx_test()
def const_of_shape_float_test():
tensor_val = onnx.helper.make_tensor('value', onnx.TensorProto.FLOAT, [1],
[10])
......@@ -789,7 +939,7 @@ def const_of_shape_float_test():
return ([shape_const, node], [], [y])
@onnx_test
@onnx_test()
def const_of_shape_int64_test():
tensor_val = onnx.helper.make_tensor('value', onnx.TensorProto.INT64, [1],
[10])
......@@ -814,7 +964,7 @@ def const_of_shape_int64_test():
return ([shape_const, node], [], [y])
@onnx_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',
......@@ -838,7 +988,7 @@ def const_of_shape_no_value_attr_test():
return ([shape_const, node], [], [y])
@onnx_test
@onnx_test()
def conv_1d_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 3])
......@@ -849,7 +999,7 @@ def conv_1d_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_3d_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 5, 5, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 3, 3, 3])
......@@ -861,7 +1011,7 @@ def conv_3d_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_attr_fail_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 3])
......@@ -875,7 +1025,7 @@ def conv_attr_fail_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_autopad_fail_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 1, 1])
......@@ -892,7 +1042,7 @@ def conv_autopad_fail_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_autopad_same_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 3, 3])
......@@ -908,7 +1058,7 @@ def conv_autopad_same_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_bias_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 5, 5])
......@@ -924,7 +1074,7 @@ def conv_bias_test():
return ([node], [x, y, z], [out])
@onnx_test
@onnx_test()
def conv_bn_relu_maxpool_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 5, 5])
......@@ -960,7 +1110,7 @@ def conv_bn_relu_maxpool_test():
return ([node0, node1, node2, node3], [x, y, z, m, n, k, l], [out])
@onnx_test
@onnx_test()
def conv_dynamic_batch_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [None, 3, 5, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 3, 3])
......@@ -971,7 +1121,7 @@ def conv_dynamic_batch_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_dynamic_img_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[1, 3, None, None])
......@@ -983,7 +1133,7 @@ def conv_dynamic_img_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_dynamic_weights_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 5, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT,
......@@ -995,7 +1145,7 @@ def conv_dynamic_weights_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_dynamic_img_and_weights_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[1, 3, None, None])
......@@ -1008,7 +1158,7 @@ def conv_dynamic_img_and_weights_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_dynamic_batch_same_upper_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [None, 3, 5, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 3, 3])
......@@ -1021,7 +1171,7 @@ def conv_dynamic_batch_same_upper_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_dynamic_img_same_upper_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[1, 3, None, None])
......@@ -1036,7 +1186,7 @@ def conv_dynamic_img_same_upper_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_dynamic_kernel_same_lower_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 5, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT,
......@@ -1050,7 +1200,7 @@ def conv_dynamic_kernel_same_lower_test():
return ([node], [x, y], [out])
@onnx_test
@onnx_test()
def conv_relu_maxpool_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 5, 5])
......@@ -1076,7 +1226,7 @@ def conv_relu_maxpool_test():
return ([node1, node2, node3], [x, y, z], [out])
@onnx_test
@onnx_test()
def conv_relu_maxpool_x2_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [5, 3, 5, 5])
......@@ -1120,7 +1270,7 @@ def conv_relu_maxpool_x2_test():
return ([node1, node2, node3, node4, node5, node6], [x, y, z, m, n], [out])
@onnx_test
@onnx_test()
def convinteger_bias_test():
x = helper.make_tensor_value_info('0', TensorProto.INT8, [1, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.INT8, [1, 3, 5, 5])
......@@ -1136,7 +1286,7 @@ def convinteger_bias_test():
return ([node], [x, y, z], [out])
@onnx_test
@onnx_test()
def cos_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -1150,7 +1300,7 @@ def cos_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def cosh_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [1])
......@@ -1164,7 +1314,7 @@ def cosh_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def deconv_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 1, 3, 3])
......@@ -1178,7 +1328,7 @@ def deconv_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_bias_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 1, 3, 3])
......@@ -1193,7 +1343,7 @@ def deconv_bias_test():
return ([node], [x, w, b], [y])
@onnx_test
@onnx_test()
def deconv_input_pads_strides_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3])
......@@ -1208,7 +1358,7 @@ def deconv_input_pads_strides_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_input_pads_asymm_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3])
......@@ -1223,7 +1373,7 @@ def deconv_input_pads_asymm_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_input_pads_asymm_1d_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3])
......@@ -1239,7 +1389,7 @@ def deconv_input_pads_asymm_1d_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_output_padding_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3])
......@@ -1254,7 +1404,7 @@ def deconv_output_padding_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_output_padding_3d_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3, 3])
......@@ -1269,7 +1419,7 @@ def deconv_output_padding_3d_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_output_shape_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3])
......@@ -1284,7 +1434,7 @@ def deconv_output_shape_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_output_shape_3d_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3, 3])
......@@ -1299,7 +1449,7 @@ def deconv_output_shape_3d_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def deconv_stride_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 1, 3, 3])
w = helper.make_tensor_value_info('w', TensorProto.FLOAT, [1, 2, 3, 3])
......@@ -1313,7 +1463,7 @@ def deconv_stride_test():
return ([node], [x, w], [y])
@onnx_test
@onnx_test()
def depthtospace_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 8, 5, 5])
......@@ -1328,7 +1478,7 @@ def depthtospace_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def depthtospace_simple_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 8, 2, 3])
......@@ -1343,7 +1493,7 @@ def depthtospace_simple_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def depthtospace_crd_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 8, 5, 5])
......@@ -1358,7 +1508,7 @@ def depthtospace_crd_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def spacetodepth_test():
x = helper.make_tensor_value_info('x', TensorProto.float, [2, 2, 10, 10])
......@@ -1372,7 +1522,7 @@ def spacetodepth_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def spacetodepth_simple_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 2, 4, 6])
......@@ -1386,7 +1536,7 @@ def spacetodepth_simple_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def spacetodepth_invalid_blocksize_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 2, 4, 6])
......@@ -1400,7 +1550,7 @@ def spacetodepth_invalid_blocksize_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def spacetodepth_nondivisibility_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 2, 5, 5])
......@@ -1414,7 +1564,7 @@ def spacetodepth_nondivisibility_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def dequantizelinear_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.INT8, [5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1])
......@@ -1429,7 +1579,7 @@ def dequantizelinear_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def dequantizelinear_zero_point_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.INT8, [5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1])
......@@ -1460,17 +1610,17 @@ def make_dequantizelinear_axis_graph(axis):
return ([node], [arg0, arg1, arg2], [arg_out])
@onnx_test
@onnx_test()
def dequantizelinear_axis_test():
return make_dequantizelinear_axis_graph(2)
@onnx_test
@onnx_test()
def dequantizelinear_neg_axis_test():
return make_dequantizelinear_axis_graph(-2)
@onnx_test
@onnx_test()
def dropout_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 2, 2])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 2, 2])
......@@ -1484,7 +1634,7 @@ def dropout_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def elu_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -1497,7 +1647,7 @@ def elu_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def embedding_bag_test():
index_val = np.array([1, 0, 2])
......@@ -1550,7 +1700,7 @@ def embedding_bag_test():
return ([index, offset, node1, node2, node3], [weight], [y1, y2, y3])
@onnx_test
@onnx_test()
def embedding_bag_offset_test():
index_val = np.array([1, 0])
......@@ -1589,7 +1739,7 @@ def embedding_bag_offset_test():
return ([index, offset, node], [weight], [y])
@onnx_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",
......@@ -1609,7 +1759,7 @@ def equal_test():
return ([node], [x2], [y], [x1])
@onnx_test
@onnx_test()
def equal_bool_test():
x1 = helper.make_tensor_value_info('x1', TensorProto.FLOAT, [2, 3])
......@@ -1627,7 +1777,7 @@ def equal_bool_test():
return ([node1, node2], [x1, x2], [y])
@onnx_test
@onnx_test()
def erf_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10, 15])
......@@ -1641,7 +1791,7 @@ def erf_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def exp_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -1655,7 +1805,7 @@ def exp_test():
return ([node], [x], [y])
@onnx_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',
......@@ -1678,7 +1828,23 @@ def expand_test():
return ([shape_const, node], [x], [y])
@onnx_test
@onnx_test(True)
def external_constant_test():
x = np.array([0, 1, 2])
y = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
tensor = from_array(x)
tensor.name = 'const_tensor'
node = onnx.helper.make_node('Constant',
inputs=[],
outputs=['0'],
value=tensor)
return ([node], [], [y])
@onnx_test()
def eyelike_default_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.FLOAT, [3, 4])
T2 = helper.make_tensor_value_info('T2', TensorProto.FLOAT, [3, 4])
......@@ -1691,7 +1857,7 @@ def eyelike_default_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def eyelike_double_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.DOUBLE, [6, 15])
T2 = helper.make_tensor_value_info('T2', TensorProto.DOUBLE, [6, 15])
......@@ -1704,7 +1870,7 @@ def eyelike_double_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def eyelike_half_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.FLOAT16, [8, 8])
T2 = helper.make_tensor_value_info('T2', TensorProto.FLOAT16, [8, 8])
......@@ -1717,7 +1883,7 @@ def eyelike_half_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def eyelike_k_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.FLOAT, [3, 4])
T2 = helper.make_tensor_value_info('T2', TensorProto.FLOAT, [3, 4])
......@@ -1725,7 +1891,7 @@ def eyelike_k_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_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])
......@@ -1736,7 +1902,7 @@ def eyelike_k_outofbounds_neg_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def eyelike_k_outofbounds_pos_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.FLOAT, [3, 4])
T2 = helper.make_tensor_value_info('T2', TensorProto.FLOAT, [3, 4])
......@@ -1744,7 +1910,7 @@ def eyelike_k_outofbounds_pos_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def eyelike_not_rank2_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.FLOAT, [3, 4, 2])
T2 = helper.make_tensor_value_info('T2', TensorProto.FLOAT, [3, 4])
......@@ -1756,7 +1922,7 @@ def eyelike_not_rank2_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def eyelike_verify_test():
T1 = helper.make_tensor_value_info('T1', TensorProto.FLOAT, [3, 4])
T2 = helper.make_tensor_value_info('T2', TensorProto.FLOAT, [3, 4])
......@@ -1764,7 +1930,7 @@ def eyelike_verify_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_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])
......@@ -1775,7 +1941,7 @@ def eyelike_verify_negk_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_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])
......@@ -1786,7 +1952,7 @@ def eyelike_set_dtype_test():
return ([node], [T1], [T2])
@onnx_test
@onnx_test()
def flatten_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
y = helper.make_tensor_value_info('2', TensorProto.FLOAT, [6, 20])
......@@ -1802,7 +1968,7 @@ def flatten_test():
return ([node, node2], [x], [y, y2])
@onnx_test
@onnx_test()
def flatten_nonstd_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 5, 4])
y = helper.make_tensor_value_info('2', TensorProto.FLOAT, [6, 20])
......@@ -1825,7 +1991,20 @@ def flatten_nonstd_test():
return ([trans, node, node2], [x], [y, y2])
@onnx_test
@onnx_test()
def flatten_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [None, 3, 4, 5])
y = helper.make_tensor_value_info('2', TensorProto.FLOAT, [None, 20])
node = onnx.helper.make_node('Flatten',
inputs=['0'],
axis=2,
outputs=['2'])
return ([node], [x], [y])
@onnx_test()
def floor_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -1839,7 +2018,7 @@ def floor_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def gather_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4, 5, 6])
i = helper.make_tensor_value_info('indices', TensorProto.INT32,
......@@ -1856,7 +2035,7 @@ def gather_test():
return ([node], [x, i], [y])
@onnx_test
@onnx_test()
def gather_elements_axis0_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4])
i = helper.make_tensor_value_info('indices', TensorProto.INT32, [2, 3])
......@@ -1872,7 +2051,7 @@ def gather_elements_axis0_test():
return ([node], [x, i], [y])
@onnx_test
@onnx_test()
def gather_elements_axis1_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4])
i = helper.make_tensor_value_info('indices', TensorProto.INT32, [2, 3])
......@@ -1888,7 +2067,7 @@ def gather_elements_axis1_test():
return ([node], [x, i], [y])
@onnx_test
@onnx_test()
def gathernd_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 2])
i = helper.make_tensor_value_info('indices', TensorProto.INT64, [2, 2])
......@@ -1901,7 +2080,7 @@ def gathernd_test():
return ([node], [x, i], [y])
@onnx_test
@onnx_test()
def gathernd_batch_dims_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 2, 2])
i = helper.make_tensor_value_info('indices', TensorProto.INT64, [2, 1])
......@@ -1917,7 +2096,7 @@ def gathernd_batch_dims_test():
return ([node], [x, i], [y])
@onnx_test
@onnx_test()
def gemm_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [5, 7])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [11, 5])
......@@ -1935,7 +2114,7 @@ def gemm_test():
return ([node], [x, y, z], [a])
@onnx_test
@onnx_test()
def gemm_ex_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 1, 8, 6])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [1, 1, 8, 7])
......@@ -1952,7 +2131,7 @@ def gemm_ex_test():
return ([node], [m1, m2, m3], [y])
@onnx_test
@onnx_test()
def gemm_ex_brcst_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 1, 5, 6])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [1, 1, 5, 7])
......@@ -1969,7 +2148,7 @@ def gemm_ex_brcst_test():
return ([node], [m1, m2, m3], [y])
@onnx_test
@onnx_test()
def gemm_half_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [1, 1, 8, 6])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT16, [1, 1, 8, 7])
......@@ -1986,7 +2165,7 @@ def gemm_half_test():
return ([node], [m1, m2, m3], [y])
@onnx_test
@onnx_test()
def globalavgpool_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, 1, 1])
......@@ -2000,7 +2179,22 @@ def globalavgpool_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def globalavgpool_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[None, 3, 16, 16])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [None, 3, 1, 1])
node = onnx.helper.make_node(
'GlobalAveragePool',
inputs=['0'],
outputs=['1'],
)
return ([node], [x], [y])
@onnx_test()
def globallppool_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, 1, 1])
......@@ -2014,7 +2208,22 @@ def globallppool_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def globallppool_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[1, 3, None, None])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 1, 1])
node = onnx.helper.make_node(
'GlobalLpPool',
inputs=['0'],
outputs=['1'],
)
return ([node], [x], [y])
@onnx_test()
def globalmaxpool_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, 1, 1])
......@@ -2028,7 +2237,22 @@ def globalmaxpool_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def globalmaxpool_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[None, 3, 32, 32])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [None, 3, 1, 1])
node = onnx.helper.make_node(
'GlobalMaxPool',
inputs=['0'],
outputs=['1'],
)
return ([node], [x], [y])
@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",
......@@ -2048,7 +2272,7 @@ def greater_test():
return ([node], [x2], [y], [x1])
@onnx_test
@onnx_test()
def greater_bool_test():
x1 = helper.make_tensor_value_info('x1', TensorProto.FLOAT, [2, 3])
......@@ -2066,7 +2290,7 @@ def greater_bool_test():
return ([node1, node2], [x1, x2], [y])
@onnx_test
@onnx_test()
def greaterorequal_test():
x1 = helper.make_tensor_value_info('x1', TensorProto.FLOAT, [3])
......@@ -2082,7 +2306,7 @@ def greaterorequal_test():
return ([node], [x1, x2], [y])
@onnx_test
@onnx_test()
def group_conv_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 4, 16, 16])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [4, 1, 3, 3])
......@@ -2098,7 +2322,7 @@ def group_conv_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def hardsigmoid_default_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 3, 4, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [1, 3, 4, 5])
......@@ -2108,7 +2332,7 @@ def hardsigmoid_default_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -2122,7 +2346,7 @@ def hardsigmoid_double_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def hardsigmoid_half_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16, [1, 3, 4, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT16, [1, 3, 4, 5])
......@@ -2132,7 +2356,7 @@ def hardsigmoid_half_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def hardsigmoid_verify_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [2, 5])
......@@ -2142,7 +2366,7 @@ def hardsigmoid_verify_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def hardswish_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [2, 5])
......@@ -2152,7 +2376,7 @@ def hardswish_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -2206,7 +2430,7 @@ def if_else_test():
return ([node], [x, y], [res], [cond_tensor, xt_tensor, yt_tensor])
@onnx_test
@onnx_test()
def if_literal_test():
then_out = onnx.helper.make_tensor_value_info('then_out',
onnx.TensorProto.FLOAT, [5])
......@@ -2254,7 +2478,7 @@ def if_literal_test():
return ([node], [cond_input], [ret])
@onnx_test
@onnx_test()
def if_param_excp_test():
then_out = onnx.helper.make_tensor_value_info('then_out',
onnx.TensorProto.FLOAT,
......@@ -2306,7 +2530,7 @@ def if_param_excp_test():
return ([node], [cond_input, x, y], [ret])
@onnx_test
@onnx_test()
def if_param_excp1_test():
then_out = onnx.helper.make_tensor_value_info('sub_out',
onnx.TensorProto.FLOAT,
......@@ -2341,7 +2565,7 @@ def if_param_excp1_test():
return ([node], [cond_input, x], [ret])
@onnx_test
@onnx_test()
def if_param_test():
then_out = onnx.helper.make_tensor_value_info('then_out',
onnx.TensorProto.FLOAT,
......@@ -2393,7 +2617,7 @@ def if_param_test():
return ([node], [cond_input, x, y], [ret])
@onnx_test
@onnx_test()
def if_pl_test():
out_x = onnx.helper.make_tensor_value_info('out_x', onnx.TensorProto.FLOAT,
[2, 3])
......@@ -2461,7 +2685,7 @@ def if_pl_test():
return ([node], [cond_input, x, y], [ret], [xt_tensor, yt_tensor])
@onnx_test
@onnx_test()
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])
......@@ -2515,7 +2739,7 @@ def if_then_test():
return ([node], [x, y], [res], [cond_tensor, xt_tensor, yt_tensor])
@onnx_test
@onnx_test()
def if_tuple_test():
x = onnx.helper.make_tensor_value_info('x', onnx.TensorProto.FLOAT, [1, 4])
y = onnx.helper.make_tensor_value_info('y', onnx.TensorProto.FLOAT, [3, 4])
......@@ -2586,7 +2810,7 @@ def if_tuple_test():
y], [res0, res1], [one_tensor, two_tensor, three_tensor])
@onnx_test
@onnx_test()
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])
......@@ -2600,7 +2824,7 @@ def imagescaler_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -2614,7 +2838,7 @@ def imagescaler_half_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def implicit_add_bcast_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 4, 1])
......@@ -2629,7 +2853,7 @@ def implicit_add_bcast_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def implicit_pow_bcast_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 4, 1])
......@@ -2645,7 +2869,7 @@ def implicit_pow_bcast_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def implicit_sub_bcast_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.UINT64, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.UINT64, [4, 5])
......@@ -2661,7 +2885,7 @@ def implicit_sub_bcast_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_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',
......@@ -2681,7 +2905,7 @@ def initializer_not_an_input():
return ([node], [x], [y], [w])
@onnx_test
@onnx_test()
def instance_norm_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 3, 3])
scale = helper.make_tensor_value_info('1', TensorProto.FLOAT, [2])
......@@ -2695,7 +2919,7 @@ def instance_norm_test():
return ([node], [x, scale, bias], [y])
@onnx_test
@onnx_test()
def instance_norm_half_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [1, 2, 3, 3])
scale = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [2])
......@@ -2709,7 +2933,7 @@ def instance_norm_half_test():
return ([node], [x, scale, bias], [y])
@onnx_test
@onnx_test()
def instance_norm_type_mismatch_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 3, 3])
scale = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [2])
......@@ -2723,7 +2947,7 @@ def instance_norm_type_mismatch_test():
return ([node], [x, scale, bias], [y])
@onnx_test
@onnx_test()
def instance_norm_invalid_type_test():
x = helper.make_tensor_value_info('0', TensorProto.INT32, [1, 2, 3, 3])
scale = helper.make_tensor_value_info('1', TensorProto.FLOAT, [2])
......@@ -2737,7 +2961,7 @@ def instance_norm_invalid_type_test():
return ([node], [x, scale, bias], [y])
@onnx_test
@onnx_test()
def instance_norm_nonbroadcastable_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 3, 3])
scale = helper.make_tensor_value_info('1', TensorProto.FLOAT, [4])
......@@ -2751,7 +2975,7 @@ def instance_norm_nonbroadcastable_test():
return ([node], [x, scale, bias], [y])
@onnx_test
@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]]]])
......@@ -2781,7 +3005,7 @@ def instance_norm_val_test():
return ([node], [], [y], [x_tensor, scale_tensor, bias_tensor])
@onnx_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]]]]])
......@@ -2811,7 +3035,7 @@ def instance_norm_val_3d_test():
return ([node], [], [y], [x_tensor, scale_tensor, bias_tensor])
@onnx_test
@onnx_test()
def isnan_float_test():
t1 = helper.make_tensor_value_info('t1', TensorProto.FLOAT, [2, 3])
t2 = helper.make_tensor_value_info('t2', TensorProto.FLOAT, [2, 3])
......@@ -2824,7 +3048,7 @@ def isnan_float_test():
return ([node], [t1], [t2])
@onnx_test
@onnx_test()
def isnan_half_test():
t1 = helper.make_tensor_value_info('t1', TensorProto.FLOAT16, [2, 3])
t2 = helper.make_tensor_value_info('t2', TensorProto.FLOAT16, [2, 3])
......@@ -2837,7 +3061,7 @@ def isnan_half_test():
return ([node], [t1], [t2])
@onnx_test
@onnx_test()
def layernorm_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 1, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 1, 5])
......@@ -2900,7 +3124,7 @@ def layernorm_test():
bias_add], [x, scale, bias], [y], [pow_tensor, epsilon_tensor])
@onnx_test
@onnx_test()
def leaky_relu_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -2913,7 +3137,7 @@ def leaky_relu_test():
return ([node], [x], [y])
@onnx_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",
......@@ -2933,7 +3157,7 @@ def less_test():
return ([node], [x2], [y], [x1])
@onnx_test
@onnx_test()
def less_bool_test():
x1 = helper.make_tensor_value_info('x1', TensorProto.FLOAT, [2, 3])
......@@ -2951,7 +3175,7 @@ def less_bool_test():
return ([node1, node2], [x1, x2], [y])
@onnx_test
@onnx_test()
def lessorequal_test():
x1 = helper.make_tensor_value_info('x1', TensorProto.FLOAT, [3])
......@@ -2967,7 +3191,7 @@ def lessorequal_test():
return ([node], [x1, x2], [y])
@onnx_test
@onnx_test()
def log_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -2981,7 +3205,7 @@ def log_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def logical_and_bcast_test():
x = helper.make_tensor_value_info('0', TensorProto.BOOL, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.BOOL, [4, 5])
......@@ -2992,7 +3216,7 @@ def logical_and_bcast_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def logical_or_test():
x = helper.make_tensor_value_info('0', TensorProto.BOOL, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.BOOL, [2, 3, 4, 5])
......@@ -3003,7 +3227,7 @@ def logical_or_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def logical_xor_bcast_test():
x = helper.make_tensor_value_info('0', TensorProto.BOOL, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.BOOL, [4, 1])
......@@ -3014,7 +3238,7 @@ def logical_xor_bcast_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
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])
......@@ -3027,7 +3251,7 @@ def logsoftmax_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3047,7 +3271,7 @@ def logsoftmax_nonstd_input_test():
return ([node0, node1], [x], [y])
@onnx_test
@onnx_test()
def loop_default_test():
body = helper.make_graph([
helper.make_node("Add", ["a", "b_in"], ["my_local"]),
......@@ -3084,7 +3308,7 @@ def loop_default_test():
return ([node], [a, b], [b_loop, uout])
@onnx_test
@onnx_test()
def loop_test():
body = helper.make_graph([
helper.make_node("Add", ["a", "b_in"], ["my_local"]),
......@@ -3125,7 +3349,7 @@ def loop_test():
return ([node], [iter, cond, a, b], [b_loop, uout])
@onnx_test
@onnx_test()
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])
......@@ -3137,7 +3361,7 @@ def lpnormalization_axis_error_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def lpnormalization_default_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3, 4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3, 4])
......@@ -3151,7 +3375,7 @@ def lpnormalization_default_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def lpnormalization_l1_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3, 4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3, 4])
......@@ -3165,7 +3389,7 @@ def lpnormalization_l1_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3177,7 +3401,7 @@ def lpnormalization_l2_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3189,7 +3413,7 @@ def lpnormalization_p_error_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def lppool_l1_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 3, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [1, 3, 3])
......@@ -3202,7 +3426,7 @@ def lppool_l1_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def lppool_l2_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1, 3, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [1, 3, 3])
......@@ -3215,7 +3439,7 @@ def lppool_l2_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3231,7 +3455,7 @@ def lrn_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def matmul_bmbm_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 6, 7])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [5, 2, 1, 7, 8])
......@@ -3246,7 +3470,7 @@ def matmul_bmbm_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def matmul_bmv_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 6, 7])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [7])
......@@ -3261,7 +3485,7 @@ def matmul_bmv_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def matmul_mv_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [6, 7])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [7])
......@@ -3276,7 +3500,7 @@ def matmul_mv_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def matmul_vbm_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [7])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [5, 7, 8])
......@@ -3291,7 +3515,7 @@ def matmul_vbm_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def matmul_vm_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [7])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [7, 8])
......@@ -3306,7 +3530,7 @@ def matmul_vm_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def matmul_vv_test():
m1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [7])
m2 = helper.make_tensor_value_info('2', TensorProto.FLOAT, [7])
......@@ -3321,7 +3545,7 @@ def matmul_vv_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def matmulinteger_test():
m1 = helper.make_tensor_value_info('1', TensorProto.INT8, [3, 6, 16])
m2 = helper.make_tensor_value_info('2', TensorProto.INT8, [3, 16, 8])
......@@ -3336,7 +3560,7 @@ def matmulinteger_test():
return ([node], [m1, m2], [y])
@onnx_test
@onnx_test()
def max_test():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
b = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -3352,7 +3576,7 @@ def max_test():
return ([node], [a, b, c], [y])
@onnx_test
@onnx_test()
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])
......@@ -3368,7 +3592,7 @@ def maxpool_notset_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3382,7 +3606,7 @@ def maxpool_same_upper_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def mean_broadcast_test():
data_0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3, 4])
data_1 = helper.make_tensor_value_info('1', TensorProto.FLOAT,
......@@ -3401,7 +3625,7 @@ def mean_broadcast_test():
return ([node], [data_0, data_1, data_2, data_3, data_4], [mean])
@onnx_test
@onnx_test()
def mean_fp16_test():
data_0 = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [1, 2, 3])
data_1 = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [1, 2, 3])
......@@ -3417,7 +3641,7 @@ def mean_fp16_test():
return ([node], [data_0, data_1, data_2], [mean])
@onnx_test
@onnx_test()
def mean_invalid_broadcast_test():
data_0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 3])
data_1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 2, 3])
......@@ -3432,7 +3656,7 @@ def mean_invalid_broadcast_test():
return ([node], [data_0, data_1, data_2], [mean])
@onnx_test
@onnx_test()
def mean_single_input_test():
data_0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 3])
mean = helper.make_tensor_value_info('mean', TensorProto.FLOAT, [1, 2, 3])
......@@ -3442,7 +3666,7 @@ def mean_single_input_test():
return ([node], [data_0], [mean])
@onnx_test
@onnx_test()
def mean_test():
data = [
helper.make_tensor_value_info(str(i), TensorProto.DOUBLE, [2, 2, 2])
......@@ -3456,7 +3680,7 @@ def mean_test():
return ([node], data, [mean])
@onnx_test
@onnx_test()
def mean_integral_test():
data = [
helper.make_tensor_value_info(str(i), TensorProto.INT32, [2, 2, 2])
......@@ -3470,7 +3694,7 @@ def mean_integral_test():
return ([node], data, [mean])
@onnx_test
@onnx_test()
def min_test():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
b = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -3486,7 +3710,7 @@ def min_test():
return ([node], [a, b, c], [y])
@onnx_test
@onnx_test()
def mod_test():
a = helper.make_tensor_value_info('0', TensorProto.INT32, [3, 3, 3])
b = helper.make_tensor_value_info('1', TensorProto.INT32, [3, 3, 3])
......@@ -3497,7 +3721,7 @@ def mod_test():
return ([node], [a, b], [y])
@onnx_test
@onnx_test()
def mod_test_half():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [3, 3, 3])
b = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [3, 3, 3])
......@@ -3508,7 +3732,7 @@ def mod_test_half():
return ([node], [a, b], [y])
@onnx_test
@onnx_test()
def mod_test_different_dtypes():
a = helper.make_tensor_value_info('0', TensorProto.INT16, [3, 3, 3])
b = helper.make_tensor_value_info('1', TensorProto.INT32, [3, 3, 3])
......@@ -3523,7 +3747,7 @@ def mod_test_different_dtypes():
return ([node], [a, b], [y])
@onnx_test
@onnx_test()
def mod_test_fmod():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3, 3, 3])
b = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 3, 3])
......@@ -3539,7 +3763,7 @@ def mod_test_fmod():
return ([node], [a, b], [y])
@onnx_test
@onnx_test()
def mod_test_fmod_half():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT16, [3, 3, 3])
b = helper.make_tensor_value_info('1', TensorProto.FLOAT16, [3, 3, 3])
......@@ -3553,7 +3777,7 @@ def mod_test_fmod_half():
return ([node], [a, b], [y])
@onnx_test
@onnx_test()
def mod_test_fmod_different_dtypes():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3, 3, 3])
b = helper.make_tensor_value_info('1', TensorProto.INT32, [3, 3, 3])
......@@ -3569,7 +3793,7 @@ def mod_test_fmod_different_dtypes():
return ([node], [a, b], [y])
@onnx_test
@onnx_test()
def multinomial_test():
sample_size = 10
seed = 0.0
......@@ -3586,7 +3810,7 @@ def multinomial_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def multinomial_generated_seed_test():
sample_size = 10
input = helper.make_tensor_value_info("input", TensorProto.FLOAT, [1, 10])
......@@ -3601,7 +3825,7 @@ def multinomial_generated_seed_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def multinomial_dtype_error_test():
sample_size = 10
dtype = 0
......@@ -3618,7 +3842,7 @@ def multinomial_dtype_error_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def multinomial_int64_test():
sample_size = 10
dtype = 7
......@@ -3637,7 +3861,7 @@ def multinomial_int64_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def neg_test():
x = helper.make_tensor_value_info('0', TensorProto.INT64, [2, 3])
y = helper.make_tensor_value_info('1', TensorProto.INT64, [2, 3])
......@@ -3647,7 +3871,17 @@ def neg_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def neg_dynamic_test():
x = helper.make_tensor_value_info('0', TensorProto.INT64, [None, 3])
y = helper.make_tensor_value_info('1', TensorProto.INT64, [None, 3])
node = onnx.helper.make_node('Neg', inputs=['0'], outputs=['1'])
return ([node], [x], [y])
@onnx_test()
def nms_test():
b = helper.make_tensor_value_info('boxes', TensorProto.FLOAT, [1, 6, 4])
s = helper.make_tensor_value_info('scores', TensorProto.FLOAT, [1, 1, 6])
......@@ -3672,7 +3906,7 @@ def nms_test():
return ([node], [b, s, mo, iou, st], [out])
@onnx_test
@onnx_test()
def nms_use_dyn_output_false_test():
b = helper.make_tensor_value_info('boxes', TensorProto.FLOAT, [1, 6, 4])
s = helper.make_tensor_value_info('scores', TensorProto.FLOAT, [1, 1, 6])
......@@ -3697,7 +3931,7 @@ def nms_use_dyn_output_false_test():
return ([node], [b, s, mo, iou, st], [out])
@onnx_test
@onnx_test()
def nms_dynamic_batch_test():
b = helper.make_tensor_value_info('boxes', TensorProto.FLOAT, [None, 6, 4])
s = helper.make_tensor_value_info('scores', TensorProto.FLOAT,
......@@ -3724,7 +3958,7 @@ def nms_dynamic_batch_test():
return ([node], [b, s, mo, iou, st], [out])
@onnx_test
@onnx_test()
def nms_dynamic_boxes_test():
b = helper.make_tensor_value_info('boxes', TensorProto.FLOAT, [1, None, 4])
s = helper.make_tensor_value_info('scores', TensorProto.FLOAT,
......@@ -3749,7 +3983,7 @@ def nms_dynamic_boxes_test():
return ([node], [b, s, mo, iou, st], [out])
@onnx_test
@onnx_test()
def nms_dynamic_classes_test():
b = helper.make_tensor_value_info('boxes', TensorProto.FLOAT, [1, 6, 4])
s = helper.make_tensor_value_info('scores', TensorProto.FLOAT,
......@@ -3774,7 +4008,7 @@ def nms_dynamic_classes_test():
return ([node], [b, s, mo, iou, st], [out])
@onnx_test
@onnx_test()
def not_test():
x = helper.make_tensor_value_info('0', TensorProto.INT32, [4])
y = helper.make_tensor_value_info('1', TensorProto.INT32, [4])
......@@ -3784,7 +4018,7 @@ def not_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def not_bool_test():
x = helper.make_tensor_value_info('0', TensorProto.BOOL, [4])
y = helper.make_tensor_value_info('1', TensorProto.BOOL, [4])
......@@ -3794,7 +4028,7 @@ def not_bool_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3807,7 +4041,7 @@ def no_pad_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -3819,7 +4053,7 @@ def nonzero_dynamic_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def nonzero_test():
data1 = np.array([[1., 0.], [1., 1.]])
data = helper.make_tensor(name='data',
......@@ -3835,7 +4069,7 @@ def nonzero_test():
return ([node], [], [y], [data])
@onnx_test
@onnx_test()
def nonzero_int_test():
data1 = np.array([[1, 1, 0], [1, 0, 1]])
data = helper.make_tensor(name='data',
......@@ -3851,7 +4085,7 @@ def nonzero_int_test():
return ([node], [], [y], [data])
@onnx_test
@onnx_test()
def onehot_test():
axis_value = 0
depth = np.array([3])
......@@ -3873,7 +4107,7 @@ def onehot_test():
return ([node], [indices, values], [y], [depth_tensor])
@onnx_test
@onnx_test()
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])
......@@ -3886,7 +4120,7 @@ def pad_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def pad_3arg_test():
values = np.array([1])
val_tensor = helper.make_tensor(name='val',
......@@ -3918,7 +4152,7 @@ def pad_3arg_test():
return ([arg_val, arg_pad, node], [x], [y])
@onnx_test
@onnx_test()
def pad_reflect_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 2])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [2, 5])
......@@ -3941,7 +4175,7 @@ def pad_reflect_test():
return ([arg_pad, node], [x], [y])
@onnx_test
@onnx_test()
def pad_reflect_multiaxis_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [4, 5])
......@@ -3964,7 +4198,7 @@ def pad_reflect_multiaxis_test():
return ([arg_pad, node], [x], [y])
@onnx_test
@onnx_test()
def pow_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [2, 3, 4, 5])
......@@ -3980,7 +4214,7 @@ def pow_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def pow_fp32_i64_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.INT64, [2, 3, 4, 5])
......@@ -3996,7 +4230,7 @@ def pow_fp32_i64_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def pow_i64_fp32_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.INT64, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [2, 3, 4, 5])
......@@ -4012,7 +4246,7 @@ def pow_i64_fp32_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
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])
......@@ -4029,7 +4263,7 @@ def prefix_scan_sum_test():
return ([node], [x], [y], [axis_tensor])
@onnx_test
@onnx_test()
def prelu_brcst_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [4, 5])
......@@ -4045,7 +4279,7 @@ def prelu_brcst_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def quantizelinear_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1])
......@@ -4060,7 +4294,7 @@ def quantizelinear_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def quantizelinear_int32_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.INT32, [5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1])
......@@ -4075,7 +4309,7 @@ def quantizelinear_int32_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def quantizelinear_zero_point_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1])
......@@ -4106,17 +4340,17 @@ def make_quantizelinear_axis_graph(axis):
return ([node], [arg0, arg1, arg2], [arg_out])
@onnx_test
@onnx_test()
def quantizelinear_axis_test():
return make_quantizelinear_axis_graph(2)
@onnx_test
@onnx_test()
def quantizelinear_neg_axis_test():
return make_quantizelinear_axis_graph(-2)
@onnx_test
@onnx_test()
def randomnormal_test():
dtype = 11
mean = 10.0
......@@ -4138,7 +4372,7 @@ def randomnormal_test():
return ([node], [], [output])
@onnx_test
@onnx_test()
def randomnormal_dtype_error_test():
dtype = 6
shape = [2, 3, 4]
......@@ -4154,7 +4388,7 @@ def randomnormal_dtype_error_test():
return ([node], [], [output])
@onnx_test
@onnx_test()
def randomnormal_generated_seed_test():
sample_size = 10
input = helper.make_tensor_value_info("input", TensorProto.FLOAT, [1, 10])
......@@ -4169,7 +4403,7 @@ def randomnormal_generated_seed_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def randomnormal_shape_error_test():
dtype = 1
output = helper.make_tensor_value_info('output', TensorProto.FLOAT,
......@@ -4183,7 +4417,7 @@ def randomnormal_shape_error_test():
return ([node], [], [output])
@onnx_test
@onnx_test()
def randomnormallike_test():
dtype = 10
mean = 10.0
......@@ -4205,7 +4439,7 @@ def randomnormallike_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def randomnormallike_type_error_test():
seed = 0
input = helper.make_tensor_value_info('input', TensorProto.INT32,
......@@ -4221,7 +4455,7 @@ def randomnormallike_type_error_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def randomuniform_test():
dtype = 11
high = 1.0
......@@ -4243,7 +4477,7 @@ def randomuniform_test():
return ([node], [], [output])
@onnx_test
@onnx_test()
def randomuniform_dtype_error_test():
dtype = 6
shape = [2, 3, 4]
......@@ -4259,7 +4493,7 @@ def randomuniform_dtype_error_test():
return ([node], [], [output])
@onnx_test
@onnx_test()
def randomuniform_generated_seed_test():
sample_size = 10
input = helper.make_tensor_value_info("input", TensorProto.FLOAT, [1, 10])
......@@ -4274,7 +4508,7 @@ def randomuniform_generated_seed_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def randomuniform_shape_error_test():
dtype = 1
output = helper.make_tensor_value_info('output', TensorProto.FLOAT,
......@@ -4288,7 +4522,7 @@ def randomuniform_shape_error_test():
return ([node], [], [output])
@onnx_test
@onnx_test()
def randomuniformlike_test():
dtype = 10
high = 10.0
......@@ -4310,7 +4544,7 @@ def randomuniformlike_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def randomuniformlike_type_error_test():
seed = 0
input = helper.make_tensor_value_info('input', TensorProto.INT32,
......@@ -4326,7 +4560,7 @@ def randomuniformlike_type_error_test():
return ([node], [input], [output])
@onnx_test
@onnx_test()
def range_test():
start_val = np.array([10])
......@@ -4369,7 +4603,7 @@ def range_test():
return ([start, limit, delta, node], [], [y])
@onnx_test
@onnx_test()
def range_float_test():
start_val = np.array([2])
......@@ -4412,7 +4646,7 @@ def range_float_test():
return ([start, limit, delta, node], [], [y])
@onnx_test
@onnx_test()
def recip_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3])
......@@ -4426,7 +4660,7 @@ def recip_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducel1_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])
......@@ -4441,7 +4675,7 @@ def reducel1_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducel2_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])
......@@ -4456,7 +4690,7 @@ def reducel2_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reduce_log_sum_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3, 4, 5, 6])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3, 1, 5, 6])
......@@ -4471,7 +4705,7 @@ def reduce_log_sum_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reduce_log_sum_exp_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3, 4, 5, 6])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 5, 6])
......@@ -4486,7 +4720,7 @@ def reduce_log_sum_exp_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducemax_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])
......@@ -4501,7 +4735,7 @@ def reducemax_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducemean_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])
......@@ -4516,7 +4750,7 @@ def reducemean_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducemean_keepdims_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])
......@@ -4531,7 +4765,7 @@ def reducemean_keepdims_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducemin_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3, 4, 5, 6])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3, 1, 5, 1])
......@@ -4546,7 +4780,7 @@ def reducemin_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reduceprod_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])
......@@ -4561,7 +4795,7 @@ def reduceprod_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducesum_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])
......@@ -4576,7 +4810,7 @@ def reducesum_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -4595,7 +4829,7 @@ def reducesum_empty_axes_test():
return ([node], [x], [y], [axes_tensor])
@onnx_test
@onnx_test()
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])
......@@ -4614,7 +4848,7 @@ def reducesum_noop_test():
return ([node], [x], [y], [axes_tensor])
@onnx_test
@onnx_test()
def reducesum_keepdims_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, 1])
......@@ -4629,7 +4863,7 @@ def reducesum_keepdims_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducesum_multiaxis_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, 1])
......@@ -4644,7 +4878,7 @@ def reducesum_multiaxis_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reducesum_square_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])
......@@ -4659,7 +4893,7 @@ def reducesum_square_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reshape_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [4, 2, 3])
x_shape = helper.make_tensor_value_info('1', TensorProto.INT64, [2])
......@@ -4678,7 +4912,7 @@ def reshape_test():
[helper.make_tensor('1', TensorProto.INT64, [2], [3, 8])])
@onnx_test
@onnx_test()
def reshape_non_standard_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 3, 4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 3, 2])
......@@ -4698,7 +4932,7 @@ def reshape_non_standard_test():
return ([trans, res], [x], [y])
@onnx_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',
......@@ -4720,7 +4954,7 @@ def resize_downsample_f_test():
return ([node], [X], [Y], [scale_tensor])
@onnx_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',
......@@ -4741,7 +4975,7 @@ def resize_downsample_c_test():
return ([node], [X], [Y], [scale_tensor])
@onnx_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',
......@@ -4760,7 +4994,7 @@ def resize_downsample_linear_test():
return ([node], [X], [Y], [scale_tensor])
@onnx_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',
......@@ -4786,7 +5020,7 @@ def resize_nonstd_input_test():
return ([trn, node], [X], [Y], [scale_tensor])
@onnx_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',
......@@ -4809,7 +5043,7 @@ def resize_outsize_test():
return ([node], [X], [Y], [out_lens_tensor])
@onnx_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',
......@@ -4830,7 +5064,7 @@ def resize_upsample_linear_ac_test():
return ([node], [X], [Y], [scales_tensor])
@onnx_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',
......@@ -4849,7 +5083,7 @@ def resize_upsample_linear_test():
return ([node], [X], [Y], [scales_tensor])
@onnx_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',
......@@ -4868,7 +5102,7 @@ def resize_upsample_pf_test():
return ([node], [X], [Y], [scale_tensor])
@onnx_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',
......@@ -4891,7 +5125,7 @@ def resize_upsample_pc_test():
return ([node], [X], [Y], [scale_tensor])
@onnx_test
@onnx_test()
def reversesequence_4D_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 2, 2, 2])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [2, 2, 2, 2])
......@@ -4907,7 +5141,7 @@ def reversesequence_4D_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_batch_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4, 4])
seq_lens = np.array([1, 2, 3, 4])
......@@ -4935,7 +5169,7 @@ def reversesequence_batch_test():
return ([arg_seq_lens, node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_batch_axis_err_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4, 4, 2])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 4, 2])
......@@ -4951,7 +5185,7 @@ def reversesequence_batch_axis_err_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_rank_err_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4])
......@@ -4965,7 +5199,7 @@ def reversesequence_rank_err_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_sequence_lens_shape_err_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4, 4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 4])
......@@ -4979,7 +5213,7 @@ def reversesequence_sequence_lens_shape_err_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_same_axis_err_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4, 4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 4])
......@@ -4995,7 +5229,7 @@ def reversesequence_same_axis_err_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_time_axis_err_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4, 4, 2, 3])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 4, 2, 3])
......@@ -5011,7 +5245,7 @@ def reversesequence_time_axis_err_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def reversesequence_time_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [4, 4])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [4, 4])
......@@ -5027,7 +5261,7 @@ def reversesequence_time_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def roialign_default_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 4, 7, 8])
roi = helper.make_tensor_value_info('rois', TensorProto.FLOAT, [8, 4])
......@@ -5041,7 +5275,7 @@ def roialign_default_test():
return ([node], [x, roi, bi], [y])
@onnx_test
@onnx_test()
def roialign_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 5, 4, 7])
roi = helper.make_tensor_value_info('rois', TensorProto.FLOAT, [8, 4])
......@@ -5062,7 +5296,7 @@ def roialign_test():
return ([node], [x, roi, bi], [y])
@onnx_test
@onnx_test()
def scatter_add_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4, 5, 6])
i = helper.make_tensor_value_info('indices', TensorProto.INT32,
......@@ -5082,7 +5316,7 @@ def scatter_add_test():
return ([node], [x, i, u], [y])
@onnx_test
@onnx_test()
def scatter_mul_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4, 5, 6])
i = helper.make_tensor_value_info('indices', TensorProto.INT32,
......@@ -5102,7 +5336,7 @@ def scatter_mul_test():
return ([node], [x, i, u], [y])
@onnx_test
@onnx_test()
def scatter_none_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4, 5, 6])
i = helper.make_tensor_value_info('indices', TensorProto.INT32,
......@@ -5122,7 +5356,7 @@ def scatter_none_test():
return ([node], [x, i, u], [y])
@onnx_test
@onnx_test()
def scatternd_add_test():
data = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 2, 2])
indices = helper.make_tensor_value_info('indices', TensorProto.INT64,
......@@ -5140,7 +5374,7 @@ def scatternd_add_test():
return ([node], [data, indices, updates], [output])
@onnx_test
@onnx_test()
def scatternd_mul_test():
data = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 2, 2])
indices = helper.make_tensor_value_info('indices', TensorProto.INT64,
......@@ -5158,7 +5392,7 @@ def scatternd_mul_test():
return ([node], [data, indices, updates], [output])
@onnx_test
@onnx_test()
def scatternd_test():
data = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 2, 2])
indices = helper.make_tensor_value_info('indices', TensorProto.INT64,
......@@ -5175,7 +5409,7 @@ def scatternd_test():
return ([node], [data, indices, updates], [output])
@onnx_test
@onnx_test()
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])
......@@ -5189,7 +5423,7 @@ def selu_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def shape_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [3, 4, 5, 6])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [4])
......@@ -5203,7 +5437,7 @@ def shape_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def shape_gather_test():
values = np.array([1])
# value = helper.make_tensor_value_info('value', TensorProto.INT32, [1])
......@@ -5238,7 +5472,7 @@ def shape_gather_test():
return ([node_const, node_shape, node_gather], [x], [z])
@onnx_test
@onnx_test()
def sign_test():
x = helper.make_tensor_value_info('x', TensorProto.DOUBLE, [10, 5])
y = helper.make_tensor_value_info('y', TensorProto.DOUBLE, [10, 5])
......@@ -5252,7 +5486,7 @@ def sign_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def sin_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -5266,7 +5500,7 @@ def sin_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def sinh_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -5280,7 +5514,21 @@ def sinh_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def sinh_dynamic_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [None])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [None])
node = onnx.helper.make_node(
'Sinh',
inputs=['x'],
outputs=['y'],
)
return ([node], [x], [y])
@onnx_test()
def size_float_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 3, 4])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [1])
......@@ -5292,7 +5540,7 @@ def size_float_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def size_half_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16, [3, 1])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [1])
......@@ -5304,7 +5552,7 @@ def size_half_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def size_int_test():
x = helper.make_tensor_value_info('x', TensorProto.INT32, [8, 2, 3])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [1])
......@@ -5316,7 +5564,7 @@ def size_int_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def size_verify_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 5, 3])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [1])
......@@ -5328,7 +5576,7 @@ def size_verify_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -5343,7 +5591,7 @@ def slice_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -5375,7 +5623,7 @@ def slice_3arg_test():
return ([arg_start, arg_end, node], [x], [y])
@onnx_test
@onnx_test()
def slice_5arg_test():
step = np.array([1, 1])
step_tensor = helper.make_tensor(name="step",
......@@ -5428,7 +5676,7 @@ def slice_5arg_test():
return ([arg_step, arg_axis, arg_end, arg_start, node], [x], [y])
@onnx_test
@onnx_test()
def slice_5arg_reverse_test():
step = np.array([-1, 1])
step_tensor = helper.make_tensor(name="step",
......@@ -5481,7 +5729,7 @@ def slice_5arg_reverse_test():
return ([arg_step, arg_axis, arg_end, arg_start, node], [x], [y])
@onnx_test
@onnx_test()
def slice_5arg_step_test():
step = np.array([-2, 2])
step_tensor = helper.make_tensor(name="step",
......@@ -5534,7 +5782,7 @@ def slice_5arg_step_test():
return ([arg_step, arg_axis, arg_end, arg_start, node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -5549,7 +5797,7 @@ def slice_max_end_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def softmax_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3])
......@@ -5559,7 +5807,7 @@ def softmax_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -5576,7 +5824,17 @@ def softmax_nonstd_input_test():
return ([node0, node1], [x], [y])
@onnx_test
@onnx_test()
def softmax_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [None, 3, 4, 4])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [None, 3, 4, 4])
node = onnx.helper.make_node('Softmax', inputs=['0'], outputs=['1'])
return ([node], [x], [y])
@onnx_test()
def softsign_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [5])
......@@ -5595,7 +5853,7 @@ def softplus_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def softsign_nd_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT16, [3, 4, 5])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT16, [3, 4, 5])
......@@ -5614,7 +5872,7 @@ def softplus_nd_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def split_minus_axis_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [10, 5])
......@@ -5631,7 +5889,7 @@ def split_minus_axis_test():
return ([node], [x], [y1, y2, y3])
@onnx_test
@onnx_test()
def split_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [10, 7])
......@@ -5647,7 +5905,7 @@ def split_test():
return ([node], [x], [y1, y2, y3])
@onnx_test
@onnx_test()
def split_test_default():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [5, 15])
......@@ -5662,7 +5920,93 @@ def split_test_default():
return ([node], [x], [y1, y2])
@onnx_test
@onnx_test()
def split_test_no_attribute():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [300, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [75, 15])
y2 = helper.make_tensor_value_info('y2', TensorProto.FLOAT, [75, 15])
y3 = helper.make_tensor_value_info('y3', TensorProto.FLOAT, [75, 15])
y4 = helper.make_tensor_value_info('y4', TensorProto.FLOAT, [75, 15])
split = np.ones(4) * 75
split_tensor = helper.make_tensor(name="split",
data_type=TensorProto.INT64,
dims=split.shape,
vals=split.astype(np.int64))
const_node = helper.make_node("Constant",
inputs=[],
outputs=['split'],
value=split_tensor)
node = onnx.helper.make_node(
'Split',
inputs=['x', 'split'],
outputs=['y1', 'y2', 'y3', 'y4'],
)
return ([const_node, node], [x], [y1, y2, y3, y4])
@onnx_test()
def split_test_no_attribute_invalid_split():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [300, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [75, 15])
y2 = helper.make_tensor_value_info('y2', TensorProto.FLOAT, [75, 15])
y3 = helper.make_tensor_value_info('y3', TensorProto.FLOAT, [75, 15])
y4 = helper.make_tensor_value_info('y4', TensorProto.FLOAT, [75, 15])
split = np.ones(4)
split_tensor = helper.make_tensor(name="split",
data_type=TensorProto.INT64,
dims=split.shape,
vals=split.astype(np.int64))
const_node = helper.make_node("Constant",
inputs=[],
outputs=['split'],
value=split_tensor)
node = onnx.helper.make_node(
'Split',
inputs=['x', 'split'],
outputs=['y1', 'y2', 'y3', 'y4'],
)
return ([const_node, node], [x], [y1, y2, y3, y4])
@onnx_test()
def split_test_invalid_split():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [10, 7])
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=[1, 1, 1])
return ([node], [x], [y1, y2, y3])
@onnx_test()
def split_test_no_attribute_invalid_input_split():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y1 = helper.make_tensor_value_info('y1', TensorProto.FLOAT, [10, 7])
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=[])
return ([node], [x], [y1, y2, y3])
@onnx_test()
def sqrt_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10, 15])
......@@ -5676,7 +6020,7 @@ def sqrt_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -5693,7 +6037,7 @@ def squeeze_axes_input_test():
return ([node], [x], [y], [axes_tensor])
@onnx_test
@onnx_test()
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])
......@@ -5710,7 +6054,7 @@ def squeeze_empty_axes_test():
return ([node], [x], [y], [axes_tensor])
@onnx_test
@onnx_test()
def squeeze_unsqueeze_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[1, 3, 1, 1, 2, 1])
......@@ -5730,7 +6074,27 @@ def squeeze_unsqueeze_test():
return ([node, node2], [x], [y])
@onnx_test
@onnx_test()
def squeeze_unsqueeze_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[1, None, 1, 1, None, 1])
y = helper.make_tensor_value_info('2', TensorProto.FLOAT,
[1, 1, None, 1, None, 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'])
return ([node, node2], [x], [y])
@onnx_test()
def sub_bcast_test():
arg0 = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
arg1 = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 4])
......@@ -5748,7 +6112,7 @@ def sub_bcast_test():
return ([node], [arg0, arg1], [arg_out])
@onnx_test
@onnx_test()
def sub_scalar_test():
values = np.array([1])
arg_node = helper.make_tensor_value_info('0', TensorProto.FLOAT,
......@@ -5777,7 +6141,7 @@ def sub_scalar_test():
return ([arg_const, node], [arg_node], [arg_out])
@onnx_test
@onnx_test()
def sum_int_test():
a = helper.make_tensor_value_info('0', TensorProto.INT16, [3])
b = helper.make_tensor_value_info('1', TensorProto.UINT16, [3])
......@@ -5797,7 +6161,7 @@ def sum_int_test():
return ([cnode1, cnode2, node], [a, b, c], [y])
@onnx_test
@onnx_test()
def sum_test():
a = helper.make_tensor_value_info('0', TensorProto.FLOAT, [3])
b = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3])
......@@ -5813,7 +6177,7 @@ def sum_test():
return ([node], [a, b, c], [y])
@onnx_test
@onnx_test()
def sum_type_test():
valb = np.array([1, 0])
t_bool = helper.make_tensor(name="bool",
......@@ -5907,7 +6271,7 @@ def sum_type_test():
])
@onnx_test
@onnx_test()
def tan_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [10])
......@@ -5921,7 +6285,7 @@ def tan_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def tanh_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [1])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [1])
......@@ -5935,7 +6299,7 @@ def tanh_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
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])
......@@ -5947,7 +6311,7 @@ def thresholdedrelu_default_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def thresholdedrelu_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])
......@@ -5961,7 +6325,7 @@ def thresholdedrelu_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def thresholdedrelu_int_test():
x = helper.make_tensor_value_info('x', TensorProto.INT32, [2, 2, 3])
y = helper.make_tensor_value_info('y', TensorProto.INT32, [2, 2, 3])
......@@ -5975,7 +6339,7 @@ def thresholdedrelu_int_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def tile_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 2])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [2])
......@@ -5987,7 +6351,7 @@ def tile_test():
[helper.make_tensor('y', TensorProto.INT64, [2], [1, 2])])
@onnx_test
@onnx_test()
def tile_test_3x2():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 2])
y = helper.make_tensor_value_info('y', TensorProto.INT64, [2])
......@@ -5999,7 +6363,7 @@ def tile_test_3x2():
[helper.make_tensor('y', TensorProto.INT64, [2], [3, 2])])
@onnx_test
@onnx_test()
def topk_attrk_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 5, 3, 2])
val = helper.make_tensor_value_info('val', TensorProto.FLOAT, [2, 2, 3, 2])
......@@ -6013,7 +6377,7 @@ def topk_attrk_test():
return ([node], [x], [val, ind])
@onnx_test
@onnx_test()
def topk_neg_axis_test():
k = np.array([3])
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 4, 5, 6])
......@@ -6034,7 +6398,7 @@ def topk_neg_axis_test():
return ([node], [x], [val, ind], [k_tensor])
@onnx_test
@onnx_test()
def topk_test():
k = np.array([4])
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [2, 5, 3, 2])
......@@ -6068,7 +6432,7 @@ def transpose_default_perm_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def transpose_invalid_perm_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 4, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 2, 2])
......@@ -6083,7 +6447,7 @@ def transpose_invalid_perm_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def transpose_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [1, 2, 2, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [1, 3, 2, 2])
......@@ -6098,6 +6462,21 @@ def transpose_test():
return ([node], [x], [y])
@onnx_test()
def transpose_dyn_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [None, 2, 2, 3])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [None, 3, 2, 2])
node = onnx.helper.make_node(
'Transpose',
perm=[0, 3, 1, 2],
inputs=['0'],
outputs=['1'],
)
return ([node], [x], [y])
@onnx_test
def transpose_gather_test():
x = helper.make_tensor_value_info('data', TensorProto.FLOAT, [3, 5, 4, 6])
......@@ -6128,7 +6507,7 @@ def transpose_gather_test():
return ([td, ti, node], [x, i], [y])
@onnx_test
@onnx_test()
def undefined_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [2, 3, 4, 5])
......@@ -6138,7 +6517,7 @@ def undefined_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def unknown_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 4])
......@@ -6154,7 +6533,7 @@ def unknown_test():
return ([node, node2], [x, y], [a])
@onnx_test
@onnx_test()
def unknown_aten_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [3, 4])
......@@ -6171,7 +6550,7 @@ def unknown_aten_test():
return ([node], [x, y], [a])
@onnx_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',
......@@ -6190,7 +6569,7 @@ def upsample_linear_test():
return ([node], [X], [Y], [scales_tensor])
@onnx_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',
......@@ -6211,7 +6590,7 @@ def upsample_test():
return ([node], [X], [Y], [scale_tensor])
@onnx_test
@onnx_test()
def variable_batch_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT,
[None, 3, 16, 16])
......@@ -6223,7 +6602,7 @@ def variable_batch_test():
return ([node], [x], [y])
@onnx_test
@onnx_test()
def variable_batch_leq_zero_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [0, 3, 16, 16])
y = helper.make_tensor_value_info('1', TensorProto.FLOAT, [-1, 3, 16, 16])
......@@ -6234,7 +6613,7 @@ def variable_batch_leq_zero_test():
return ([node], [x, y], [z])
@onnx_test
@onnx_test()
def where_test():
c = helper.make_tensor_value_info('c', TensorProto.BOOL, [2])
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [2, 2, 2])
......
......@@ -42,7 +42,6 @@
#include <migraphx/op/lrn.hpp>
#include <migraphx/op/reshape.hpp>
#include <migraphx/op/unknown.hpp>
#include <random>
#include <migraphx/serialize.hpp>
......@@ -182,6 +181,24 @@ TEST_CASE(argmax_test)
EXPECT(p == prog);
}
TEST_CASE(argmax_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter(
"x",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {4, 4, 0}, {5, 5, 0}, {6, 6, 0}}});
auto ins = mm->add_instruction(migraphx::make_op("argmax", {{"axis", 2}}), l0);
auto ret = mm->add_instruction(migraphx::make_op("squeeze", {{"axes", {2}}}), ins);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = parse_onnx("argmax_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(argmin_test)
{
migraphx::program p;
......@@ -274,6 +291,51 @@ TEST_CASE(averagepool_3d_test)
EXPECT(p == prog);
}
TEST_CASE(averagepool_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter(
"0",
{migraphx::shape::float_type, {{1, 4, 0}, {3, 3, 0}, {5, 5, 0}, {5, 5, 0}, {5, 5, 0}}});
auto ret = mm->add_instruction(migraphx::make_op("pooling",
{{"mode", migraphx::op::pooling_mode::average},
{"padding", {0, 0, 0, 0, 0, 0}},
{"stride", {1, 1, 1}},
{"lengths", {3, 3, 3}}}),
l0);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = migraphx::parse_onnx("averagepool_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(averagepool_dyn_autopad_error_test)
{
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
EXPECT(test::throws(
[&] { migraphx::parse_onnx("averagepool_dyn_autopad_error_test.onnx", options); }));
}
TEST_CASE(averagepool_dyn_asym_padding_error_test)
{
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
EXPECT(test::throws(
[&] { migraphx::parse_onnx("averagepool_dyn_asym_padding_error_test.onnx", options); }));
}
TEST_CASE(averagepool_dyn_cip_error_test)
{
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
EXPECT(test::throws(
[&] { migraphx::parse_onnx("averagepool_dyn_cip_error_test.onnx", options); }));
}
TEST_CASE(averagepool_notset_test)
{
migraphx::program p;
......@@ -394,6 +456,31 @@ TEST_CASE(batch_norm_flat_test)
EXPECT(p == prog);
}
TEST_CASE(batch_norm_rank_2_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto x = mm->add_parameter("x", {migraphx::shape::float_type, {2, 5}});
auto scale = mm->add_parameter("scale", {migraphx::shape::float_type, {5}});
auto bias = mm->add_parameter("bias", {migraphx::shape::float_type, {5}});
auto mean = mm->add_parameter("mean", {migraphx::shape::float_type, {5}});
auto var = mm->add_parameter("variance", {migraphx::shape::float_type, {5}});
auto rt = mm->add_literal(migraphx::literal{migraphx::shape::float_type, {0.5}});
auto eps = mm->add_literal(migraphx::literal{migraphx::shape::float_type, {1e-6f}});
auto numer = add_common_op(*mm, migraphx::make_op("sub"), {x, mean});
auto var_eps = add_common_op(*mm, migraphx::make_op("add"), {var, eps});
auto denom = add_common_op(*mm, migraphx::make_op("pow"), {var_eps, rt});
auto div0 = add_common_op(*mm, migraphx::make_op("div"), {numer, denom});
auto r0 = add_common_op(*mm, migraphx::make_op("mul"), {div0, scale});
add_common_op(*mm, migraphx::make_op("add"), {r0, bias});
auto prog = optimize_onnx("batch_norm_rank_2_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(batch_norm_1d_test)
{
migraphx::program p;
......@@ -497,6 +584,76 @@ TEST_CASE(batch_norm_invalid_bias_rank)
EXPECT(test::throws([&] { migraphx::parse_onnx("batch_norm_invalid_bias_rank.onnx"); }));
}
TEST_CASE(binary_dyn_brcst_prelu_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter(
"0",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {3, 3, 0}, {4, 4, 0}, {5, 5, 0}}});
auto l1 = mm->add_parameter("1", migraphx::shape{migraphx::shape::float_type, {4, 5}});
auto ret = add_common_op(*mm, migraphx::make_op("prelu"), {l0, l1});
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = migraphx::parse_onnx("binary_dyn_brcst_prelu_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(binary_dyn_brcst_add_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter("0", migraphx::shape{migraphx::shape::half_type, {4, 5}});
auto l1 = mm->add_parameter(
"1",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {3, 3, 0}, {4, 4, 0}, {5, 5, 0}}});
auto ret = add_common_op(*mm, migraphx::make_op("add"), {l0, l1});
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = migraphx::parse_onnx("binary_dyn_brcst_add_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(binary_dyn_brcst_attr_error_test)
{
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
EXPECT(test::throws(
[&] { migraphx::parse_onnx("binary_dyn_brcst_attr_error_test.onnx", options); }));
}
TEST_CASE(binary_dyn_brcst_mul_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter(
"0",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {3, 3, 0}, {4, 4, 0}, {5, 5, 0}}});
auto l1 = mm->add_parameter("1", migraphx::shape{migraphx::shape::float_type, {4, 1}});
auto bl1 = mm->add_instruction(
migraphx::make_op("multibroadcast",
{{"out_dyn_dims", to_value(l0->get_shape().dyn_dims())}}),
l1,
l0);
auto ret = mm->add_instruction(migraphx::make_op("mul"), l0, bl1);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = migraphx::parse_onnx("binary_dyn_brcst_mul_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(cast_test)
{
migraphx::program p;
......@@ -856,8 +1013,7 @@ TEST_CASE(conv_autopad_same_test)
auto l0 = mm->add_parameter("0", {migraphx::shape::float_type, {1, 3, 32, 32}});
auto l1 = mm->add_parameter("1", {migraphx::shape::float_type, {1, 3, 3, 3}});
migraphx::op::convolution op;
op.padding = {1, 1, 1, 1};
op.padding_mode = migraphx::op::padding_mode_t::same;
op.padding = {1, 1, 1, 1};
mm->add_instruction(op, l0, l1);
auto prog = optimize_onnx("conv_autopad_same_test.onnx");
......@@ -1034,15 +1190,11 @@ TEST_CASE(conv_dynamic_batch_same_upper)
auto l0 = mm->add_parameter(
"0", {migraphx::shape::float_type, {{1, 10, 0}, {3, 3, 0}, {5, 5, 0}, {5, 5, 0}}});
auto l1 = mm->add_parameter("1", {migraphx::shape::float_type, {1, 3, 3, 3}});
auto c0 =
mm->add_instruction(migraphx::make_op("convolution",
{{"padding", {1, 1, 1, 1}},
{"stride", {1, 1}},
{"dilation", {1, 1}},
{"padding_mode", migraphx::op::padding_mode_t::same},
{"use_dynamic_same_auto_pad", false}}),
l0,
l1);
auto c0 = mm->add_instruction(
migraphx::make_op("convolution",
{{"padding", {1, 1, 1, 1}}, {"stride", {1, 1}}, {"dilation", {1, 1}}}),
l0,
l1);
mm->add_return({c0});
migraphx::onnx_options options;
......@@ -1064,8 +1216,7 @@ TEST_CASE(conv_dynamic_img_same_upper)
{{"padding", {0, 0}},
{"stride", {1, 1}},
{"dilation", {1, 1}},
{"padding_mode", migraphx::op::padding_mode_t::same_upper},
{"use_dynamic_same_auto_pad", true}}),
{"padding_mode", migraphx::op::padding_mode_t::same_upper}}),
l0,
l1);
mm->add_return({c0});
......@@ -1089,8 +1240,7 @@ TEST_CASE(conv_dynamic_kernel_same_lower)
{{"padding", {0, 0}},
{"stride", {1, 1}},
{"dilation", {1, 1}},
{"padding_mode", migraphx::op::padding_mode_t::same_lower},
{"use_dynamic_same_auto_pad", true}}),
{"padding_mode", migraphx::op::padding_mode_t::same_lower}}),
l0,
l1);
mm->add_return({c0});
......@@ -1668,6 +1818,16 @@ migraphx::program create_external_data_prog()
return p;
}
TEST_CASE(external_constant_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
mm->add_literal(migraphx::literal{{migraphx::shape::int64_type, {3}}, {0, 1, 2}});
auto prog = optimize_onnx("external_constant_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(external_data_test)
{
migraphx::program p = create_external_data_prog();
......@@ -1827,6 +1987,23 @@ TEST_CASE(flatten_nonstd_test)
EXPECT(p == prog);
}
TEST_CASE(flatten_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter(
"0",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {3, 3, 0}, {4, 4, 0}, {5, 5, 0}}});
auto c0 = mm->add_instruction(migraphx::make_op("contiguous"), l0);
auto ret = mm->add_instruction(migraphx::make_op("flatten", {{"axis", 2}}), c0);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = parse_onnx("flatten_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(floor_test)
{
migraphx::program p;
......@@ -2057,6 +2234,28 @@ TEST_CASE(globalavgpool_test)
EXPECT(p == prog);
}
TEST_CASE(globalavgpool_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto input =
mm->add_parameter("0",
migraphx::shape{migraphx::shape::float_type,
{{1, 4, 0}, {3, 3, 0}, {16, 16, 0}, {16, 16, 0}}});
auto ret = mm->add_instruction(migraphx::make_op("pooling",
{{"mode", migraphx::op::pooling_mode::average},
{"lengths", {16, 16}},
{"padding", {0, 0, 0, 0}}}),
input);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = parse_onnx("globalavgpool_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(globallppool_test)
{
migraphx::program p;
......@@ -2074,6 +2273,29 @@ TEST_CASE(globallppool_test)
EXPECT(p == prog);
}
TEST_CASE(globallppool_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto input =
mm->add_parameter("0",
migraphx::shape{migraphx::shape::float_type,
{{1, 1, 0}, {3, 3, 0}, {16, 32, 0}, {16, 32, 0}}});
auto ret = mm->add_instruction(migraphx::make_op("pooling",
{{"mode", migraphx::op::pooling_mode::lpnorm},
{"dyn_global", true},
{"padding", {0, 0, 0, 0}},
{"lengths", {}}}),
input);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {16, 32, 0};
auto prog = migraphx::parse_onnx("globallppool_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(globalmaxpool_test)
{
migraphx::program p;
......@@ -2091,6 +2313,28 @@ TEST_CASE(globalmaxpool_test)
EXPECT(p == prog);
}
TEST_CASE(globalmaxpool_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto input =
mm->add_parameter("0",
migraphx::shape{migraphx::shape::float_type,
{{1, 4, 0}, {3, 3, 0}, {32, 32, 0}, {32, 32, 0}}});
auto ret = mm->add_instruction(migraphx::make_op("pooling",
{{"mode", migraphx::op::pooling_mode::max},
{"lengths", {32, 32}},
{"padding", {0, 0, 0, 0}}}),
input);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = parse_onnx("globalmaxpool_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(greater_test)
{
migraphx::program p;
......@@ -3483,6 +3727,21 @@ TEST_CASE(neg_test)
EXPECT(p == prog);
}
TEST_CASE(neg_dynamic_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
migraphx::shape s{migraphx::shape::int64_type, {{1, 10, 0}, {3, 3, 0}}};
auto input = mm->add_parameter("0", s);
auto ret = mm->add_instruction(migraphx::make_op("neg"), input);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 10, 0};
auto prog = migraphx::parse_onnx("neg_dynamic_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(nms_test)
{
migraphx::program p;
......@@ -5206,6 +5465,24 @@ TEST_CASE(sinh_test)
EXPECT(p == prog);
}
TEST_CASE(sinh_dynamic_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
migraphx::shape::dynamic_dimension dd{1, 10, 0};
std::vector<migraphx::shape::dynamic_dimension> dyn_dims;
dyn_dims.push_back(dd);
auto input = mm->add_parameter("x", migraphx::shape{migraphx::shape::float_type, dyn_dims});
auto ret = mm->add_instruction(migraphx::make_op("sinh"), input);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = dd;
auto prog = parse_onnx("sinh_dynamic_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(size_float_test)
{
migraphx::program p;
......@@ -5372,6 +5649,23 @@ TEST_CASE(softmax_nonstd_input_test)
EXPECT(p == prog);
}
TEST_CASE(softmax_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto l0 = mm->add_parameter(
"0",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {3, 3, 0}, {4, 4, 0}, {4, 4, 0}}});
auto ret = mm->add_instruction(migraphx::make_op("softmax", {{"axis", -1}}), l0);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = migraphx::parse_onnx("softmax_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(softplus_test)
{
migraphx::program p;
......@@ -5487,6 +5781,31 @@ TEST_CASE(split_test)
EXPECT(p == prog);
}
TEST_CASE(split_test_no_attribute)
{
migraphx::program p;
auto* mm = p.get_main_module();
migraphx::shape si{migraphx::shape::int64_type, {4}, {1}};
std::vector<int> ind = {75, 75, 75, 75};
auto input = mm->add_parameter("x", migraphx::shape{migraphx::shape::float_type, {300, 15}});
mm->add_literal(migraphx::literal(si, ind));
auto r1 = mm->add_instruction(
migraphx::make_op("slice", {{"axes", {0}}, {"starts", {0}}, {"ends", {75}}}), input);
auto r2 = mm->add_instruction(
migraphx::make_op("slice", {{"axes", {0}}, {"starts", {75}}, {"ends", {150}}}), input);
auto r3 = mm->add_instruction(
migraphx::make_op("slice", {{"axes", {0}}, {"starts", {150}}, {"ends", {225}}}), input);
auto r4 = mm->add_instruction(
migraphx::make_op("slice", {{"axes", {0}}, {"starts", {225}}, {"ends", {300}}}), input);
mm->add_return({r1, r2, r3, r4});
auto prog = migraphx::parse_onnx("split_test_no_attribute.onnx");
EXPECT(p == prog);
}
TEST_CASE(split_test_default)
{
migraphx::program p;
......@@ -5502,6 +5821,23 @@ TEST_CASE(split_test_default)
EXPECT(p == prog);
}
TEST_CASE(split_test_no_attribute_invalid_split)
{
EXPECT(
test::throws([&] { migraphx::parse_onnx("split_test_no_attribute_invalid_split.onnx"); }));
}
TEST_CASE(split_test_invalid_split)
{
EXPECT(test::throws([&] { migraphx::parse_onnx("split_test_invalid_split.onnx"); }));
}
TEST_CASE(split_test_no_attribute_invalid_input_split)
{
EXPECT(test::throws(
[&] { migraphx::parse_onnx("split_test_no_attribute_invalid_input_split.onnx"); }));
}
TEST_CASE(sqrt_test)
{
migraphx::program p;
......@@ -5528,6 +5864,29 @@ TEST_CASE(squeeze_unsqueeze_test)
EXPECT(p == prog);
}
TEST_CASE(squeeze_unsqueeze_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
std::vector<int64_t> squeeze_axes{0, 2, 3, 5};
std::vector<int64_t> unsqueeze_axes{0, 1, 3, 5};
auto l0 = mm->add_parameter(
"0",
migraphx::shape{migraphx::shape::float_type,
{{1, 1, 0}, {1, 4, 0}, {1, 1, 0}, {1, 1, 0}, {1, 4, 0}, {1, 1, 0}}});
auto c0 = mm->add_instruction(migraphx::make_op("contiguous"), l0);
auto l1 = mm->add_instruction(migraphx::make_op("squeeze", {{"axes", squeeze_axes}}), c0);
auto c1 = mm->add_instruction(migraphx::make_op("contiguous"), l1);
auto ret = mm->add_instruction(migraphx::make_op("unsqueeze", {{"axes", unsqueeze_axes}}), c1);
mm->add_return({ret});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = parse_onnx("squeeze_unsqueeze_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(squeeze_axes_input_test)
{
migraphx::program p;
......@@ -5811,6 +6170,24 @@ TEST_CASE(transpose_test)
EXPECT(p == prog);
}
TEST_CASE(transpose_dyn_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto input = mm->add_parameter(
"0",
migraphx::shape{migraphx::shape::float_type, {{1, 4, 0}, {2, 2, 0}, {2, 2, 0}, {3, 3, 0}}});
std::vector<int64_t> perm{0, 3, 1, 2};
auto t0 = mm->add_instruction(migraphx::make_op("transpose", {{"permutation", perm}}), input);
mm->add_return({t0});
migraphx::onnx_options options;
options.default_dyn_dim_value = {1, 4, 0};
auto prog = migraphx::parse_onnx("transpose_dyn_test.onnx", options);
EXPECT(p == prog);
}
TEST_CASE(topk_attrk_test)
{
migraphx::program p;
......
split_test_invalid_split:
5
xy1y2y3"Split*
axis*
split@@@split_test_invalid_splitZ
x


b
y1


b
y2


b
y3


B
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment