diff --git a/testdata/dnn/onnx/data/input_matmul_2d_init.npy b/testdata/dnn/onnx/data/input_matmul_2d_init.npy new file mode 100644 index 000000000..e89c7360a Binary files /dev/null and b/testdata/dnn/onnx/data/input_matmul_2d_init.npy differ diff --git a/testdata/dnn/onnx/data/input_matmul_3d_init.npy b/testdata/dnn/onnx/data/input_matmul_3d_init.npy new file mode 100644 index 000000000..f75082256 Binary files /dev/null and b/testdata/dnn/onnx/data/input_matmul_3d_init.npy differ diff --git a/testdata/dnn/onnx/data/input_matmul_4d_init.npy b/testdata/dnn/onnx/data/input_matmul_4d_init.npy new file mode 100644 index 000000000..60b417261 Binary files /dev/null and b/testdata/dnn/onnx/data/input_matmul_4d_init.npy differ diff --git a/testdata/dnn/onnx/data/output_matmul_2d_init.npy b/testdata/dnn/onnx/data/output_matmul_2d_init.npy new file mode 100644 index 000000000..aece5d99f Binary files /dev/null and b/testdata/dnn/onnx/data/output_matmul_2d_init.npy differ diff --git a/testdata/dnn/onnx/data/output_matmul_3d_init.npy b/testdata/dnn/onnx/data/output_matmul_3d_init.npy new file mode 100644 index 000000000..483739928 Binary files /dev/null and b/testdata/dnn/onnx/data/output_matmul_3d_init.npy differ diff --git a/testdata/dnn/onnx/data/output_matmul_4d_init.npy b/testdata/dnn/onnx/data/output_matmul_4d_init.npy new file mode 100644 index 000000000..89b2e8de9 Binary files /dev/null and b/testdata/dnn/onnx/data/output_matmul_4d_init.npy differ diff --git a/testdata/dnn/onnx/generate_onnx_models.py b/testdata/dnn/onnx/generate_onnx_models.py index a0627e9ba..a10bf2ec7 100644 --- a/testdata/dnn/onnx/generate_onnx_models.py +++ b/testdata/dnn/onnx/generate_onnx_models.py @@ -1169,6 +1169,41 @@ def forward(self, x): x = Variable(torch.randn(1, 3, 2, 4)) save_data_and_model("matmul_4d", x, model) +########### MatMul init ########### +def generate_matmul_init(name, inputA, inputB): + output = inputA @ inputB + shapeA = inputA.shape + shapeB = inputB.shape + shapeY = output.shape + + input_files = os.path.join("data", "input_" + name) + np.save(input_files, inputA.data) + output_files = os.path.join("data", "output_" + name) + np.save(output_files, np.ascontiguousarray(output.data)) + + A = onnx.helper.make_tensor_value_info('A', onnx.TensorProto.FLOAT, shapeA) + B = onnx.helper.make_tensor_value_info('B', onnx.TensorProto.FLOAT, shapeB) + Y = onnx.helper.make_tensor_value_info('output', onnx.TensorProto.FLOAT, shapeY) + B_INIT = onnx.helper.make_tensor("B", onnx.TensorProto.FLOAT, shapeB, inputB) + + + node = onnx.helper.make_node("MatMul", inputs=['A', "B",], outputs=['output']) + graph = onnx.helper.make_graph([node], name, [A, B], [Y], [B_INIT]) + model = onnx.helper.make_model(graph, producer_name=name) + onnx.save(model, os.path.join("models", name + ".onnx")) + +inputA = np.random.randn(2, 3).astype(np.float32) +inputB = np.random.randn(3, 4).astype(np.float32) +generate_matmul_init("matmul_2d_init", inputA, inputB) + +inputA = np.random.randn(5, 2, 3).astype(np.float32) +inputB = np.random.randn(5, 3, 4).astype(np.float32) +generate_matmul_init("matmul_3d_init", inputA, inputB) + +inputA = np.random.randn(6, 2, 3, 4).astype(np.float32) +inputB = np.random.randn(6, 2, 4, 5).astype(np.float32) +generate_matmul_init("matmul_4d_init", inputA, inputB) + x = np.random.rand(1, 3, 2) output = np.mean(x, axis=1, keepdims=True) save_onnx_data_and_model(x, output, 'reduce_mean_axis1', 'ReduceMean', axes=(1), keepdims=True) diff --git a/testdata/dnn/onnx/models/matmul_2d_init.onnx b/testdata/dnn/onnx/models/matmul_2d_init.onnx new file mode 100644 index 000000000..d77066a5b --- /dev/null +++ b/testdata/dnn/onnx/models/matmul_2d_init.onnx @@ -0,0 +1,16 @@ +matmul_2d_init: + +A +Boutput"MatMulmatmul_2d_init*;"08s?bhdӽ9>(>%?^B?0= B>]ת>=?RBBZ +A +  + +Z +B +  + +b +output +  + +B \ No newline at end of file diff --git a/testdata/dnn/onnx/models/matmul_3d_init.onnx b/testdata/dnn/onnx/models/matmul_3d_init.onnx new file mode 100644 index 000000000..33a0513f9 --- /dev/null +++ b/testdata/dnn/onnx/models/matmul_3d_init.onnx @@ -0,0 +1,19 @@ +matmul_3d_init: + +A +Boutput"MatMulmatmul_3d_init*"4οYL=e> kQN>.:=ݚ>b"6^&,Z[*Pܿ35>;;Wп>DhT=:?>ב?>O/^~/Ѓ f=#f?Ok>Ŀ ??@?7>8lF?5mξy? FU>z?u>4?G,>> ?^Ab*x?(?Ӿ3Y?BBZ +A + + + +Z +B + + + +b +output + + + +B \ No newline at end of file diff --git a/testdata/dnn/onnx/models/matmul_4d_init.onnx b/testdata/dnn/onnx/models/matmul_4d_init.onnx new file mode 100644 index 000000000..59b8631d5 Binary files /dev/null and b/testdata/dnn/onnx/models/matmul_4d_init.onnx differ