Skip to content

Commit dad72ff

Browse files
test qlinear softmax
1 parent 84c2089 commit dad72ff

File tree

3 files changed

+252
-0
lines changed

3 files changed

+252
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
ir_version: 3
2+
producer_name: "OpenVINO ONNX Frontend"
3+
producer_version: ""
4+
model_version: 0
5+
graph {
6+
name: "test_qlinear_softmax_opset12"
7+
8+
node {
9+
input: "X"
10+
input: "X_scale"
11+
input: "X_zero_point"
12+
input: "Y_scale"
13+
input: "Y_zero_point"
14+
output: "Y"
15+
op_type: "QLinearSoftmax"
16+
attribute {
17+
name: "opset"
18+
i: 12
19+
type: INT
20+
}
21+
domain: "com.microsoft"
22+
}
23+
24+
input {
25+
name: "X"
26+
type {
27+
tensor_type {
28+
elem_type: 3
29+
shape {
30+
dim { dim_value: 4 }
31+
dim { dim_value: 5 }
32+
}
33+
}
34+
}
35+
}
36+
37+
input {
38+
name: "X_scale"
39+
type {
40+
tensor_type {
41+
elem_type: 1
42+
shape {
43+
dim { dim_value: 1 }
44+
}
45+
}
46+
}
47+
}
48+
49+
input {
50+
name: "X_zero_point"
51+
type {
52+
tensor_type {
53+
elem_type: 3
54+
shape {
55+
dim { dim_value: 1 }
56+
}
57+
}
58+
}
59+
}
60+
61+
input {
62+
name: "Y_scale"
63+
type {
64+
tensor_type {
65+
elem_type: 1
66+
shape {
67+
dim { dim_value: 1 }
68+
}
69+
}
70+
}
71+
}
72+
73+
input {
74+
name: "Y_zero_point"
75+
type {
76+
tensor_type {
77+
elem_type: 3
78+
shape {
79+
dim { dim_value: 1 }
80+
}
81+
}
82+
}
83+
}
84+
85+
output {
86+
name: "Y"
87+
type {
88+
tensor_type {
89+
elem_type: 3
90+
shape {
91+
dim { dim_value: 4 }
92+
dim { dim_value: 5 }
93+
}
94+
}
95+
}
96+
}
97+
}
98+
99+
opset_import {
100+
version: 1
101+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
ir_version: 3
2+
producer_name: "OpenVINO ONNX Frontend"
3+
producer_version: ""
4+
model_version: 0
5+
graph {
6+
name: "test_qlinear_softmax"
7+
8+
node {
9+
input: "X"
10+
input: "X_scale"
11+
input: "X_zero_point"
12+
input: "Y_scale"
13+
input: "Y_zero_point"
14+
output: "Y"
15+
op_type: "QLinearSoftmax"
16+
attribute {
17+
name: "axis"
18+
i: -1
19+
type: INT
20+
}
21+
attribute {
22+
name: "opset"
23+
i: 12
24+
type: INT
25+
}
26+
domain: "com.microsoft"
27+
}
28+
29+
input {
30+
name: "X"
31+
type {
32+
tensor_type {
33+
elem_type: 3
34+
shape {
35+
dim { dim_value: 2 }
36+
dim { dim_value: 3 }
37+
}
38+
}
39+
}
40+
}
41+
42+
input {
43+
name: "X_scale"
44+
type {
45+
tensor_type {
46+
elem_type: 1
47+
shape {
48+
dim { dim_value: 1 }
49+
}
50+
}
51+
}
52+
}
53+
54+
input {
55+
name: "X_zero_point"
56+
type {
57+
tensor_type {
58+
elem_type: 3
59+
shape {
60+
dim { dim_value: 1 }
61+
}
62+
}
63+
}
64+
}
65+
66+
input {
67+
name: "Y_scale"
68+
type {
69+
tensor_type {
70+
elem_type: 1
71+
shape {
72+
dim { dim_value: 1 }
73+
}
74+
}
75+
}
76+
}
77+
78+
input {
79+
name: "Y_zero_point"
80+
type {
81+
tensor_type {
82+
elem_type: 3
83+
shape {
84+
dim { dim_value: 1 }
85+
}
86+
}
87+
}
88+
}
89+
90+
output {
91+
name: "Y"
92+
type {
93+
tensor_type {
94+
elem_type: 3
95+
shape {
96+
dim { dim_value: 2 }
97+
dim { dim_value: 3 }
98+
}
99+
}
100+
}
101+
}
102+
}
103+
104+
opset_import {
105+
version: 1
106+
}

src/frontends/onnx/tests/onnx_import_com_microsoft.in.cpp

+45
Original file line numberDiff line numberDiff line change
@@ -1740,3 +1740,48 @@ OPENVINO_TEST(${BACKEND_NAME}, onnx_com_microsoft_bias_add) {
17401740

17411741
test_case.run();
17421742
}
1743+
1744+
OPENVINO_TEST(${BACKEND_NAME}, onnx_com_microsoft_qlinearsoftmax) {
1745+
const auto model = convert_model("com.microsoft/qlinear_softmax_opset13.onnx");
1746+
auto test_case = ov::test::TestCase(model, s_device);
1747+
1748+
const std::vector<int8_t> data_X{-50, -25, 0, 25, 50, 75};
1749+
const std::vector<float> x_scale{0.1f};
1750+
const std::vector<int8_t> x_zero_point{0};
1751+
const std::vector<float> y_scale{0.03f};
1752+
const std::vector<int8_t> y_zero_point{5};
1753+
1754+
const std::vector<int8_t> expected_output{5, 7, 35, 5, 7, 35};
1755+
1756+
test_case.add_input<int8_t>(Shape{2, 3}, data_X);
1757+
test_case.add_input<float>(Shape{1}, x_scale);
1758+
test_case.add_input<int8_t>(Shape{1}, x_zero_point);
1759+
test_case.add_input<float>(Shape{1}, y_scale);
1760+
test_case.add_input<int8_t>(Shape{1}, y_zero_point);
1761+
1762+
test_case.add_expected_output<int8_t>(Shape{2, 3}, expected_output);
1763+
test_case.run();
1764+
}
1765+
1766+
OPENVINO_TEST(${BACKEND_NAME}, onnx_com_microsoft_qlinearsoftmax_opset12) {
1767+
const auto model = convert_model("com.microsoft/qlinear_softmax_opset12.onnx");
1768+
auto test_case = ov::test::TestCase(model, s_device);
1769+
1770+
const std::vector<int8_t> data_X{-60, -40, -20, 0, 20, 40, 60, 80, 100, 120,
1771+
-10, -5, 0, 5, 10, -80, -60, -40, -20, 0};
1772+
const std::vector<float> x_scale{0.15f};
1773+
const std::vector<int8_t> x_zero_point{0};
1774+
const std::vector<float> y_scale{0.05f};
1775+
const std::vector<int8_t> y_zero_point{3};
1776+
1777+
const std::vector<int8_t> expected_output{3, 3, 3, 3, 22, 3, 3, 3, 3, 22, 3, 4, 5, 8, 13, 3, 3, 3, 3, 22};
1778+
1779+
test_case.add_input<int8_t>(Shape{4, 5}, data_X);
1780+
test_case.add_input<float>(Shape{1}, x_scale);
1781+
test_case.add_input<int8_t>(Shape{1}, x_zero_point);
1782+
test_case.add_input<float>(Shape{1}, y_scale);
1783+
test_case.add_input<int8_t>(Shape{1}, y_zero_point);
1784+
1785+
test_case.add_expected_output<int8_t>(Shape{4, 5}, expected_output);
1786+
test_case.run();
1787+
}

0 commit comments

Comments
 (0)