Commit 56d3a46a authored by Michał Karzyński's avatar Michał Karzyński Committed by Scott Cyphers

[ONNX] Unit tests for DequantizeLinear (#2704)

* [ONNX] Unit test models for DequantizeLinear

* add unit tests and suppot axis

* ignore unit tests on GPU

* fix build warning
parent 7d69434a
......@@ -55,10 +55,25 @@ namespace ngraph
Shape y_scale_shape = x_scale->get_shape();
Shape y_zero_point_shape = zero_point->get_shape();
ASSERT_VALID_ARGUMENT(node, y_scale_shape.size() == 0)
<< "x_scale must be a scalar.";
ASSERT_VALID_ARGUMENT(node, y_zero_point_shape.size() == 0)
<< "zero_point must be a scalar.";
// get axis twice with two default values to see if it is set
int64_t axis_0{node.get_attribute_value<int64_t>("axis", 0)};
int64_t axis_1{node.get_attribute_value<int64_t>("axis", 1)};
AxisSet axes;
// if axis attribute is set
if (axis_0 == axis_1)
{
// positive axis
if (axis_0 >= 0)
{
axes.insert(axis_0);
}
// negative axis
else if (axis_0 < 0)
{
axes.insert(x->get_shape().size() + axis_0);
}
}
if (x->get_element_type() != zero_point->get_element_type())
{
......@@ -67,7 +82,7 @@ namespace ngraph
}
return {std::make_shared<ngraph::op::Dequantize>(
x, x_scale, zero_point, x_scale->get_element_type(), AxisSet{})};
x, x_scale, zero_point, x_scale->get_element_type(), axes)};
}
} // namespace set_1
......
......@@ -115,6 +115,12 @@ pad_reflect_2d_with_neg
# Quantized operators are not supported on gpu backend
model_dequantize_linear
model_dequantize_linear_scalar_zero_scale_uint8
model_dequantize_linear_scalar_zero_scale_int8
model_dequantize_linear_1d_zero_scale_uint8
model_dequantize_linear_1d_zero_scale_int8
model_dequantize_linear_1d_zero_scale_int8_4d
model_dequantize_linear_1d_zero_scale_uint8_negative_axis
model_quantize_linear
model_quantize_linear_zero_point
quantize_linear_axis_zero
......
ir_version: 3
producer_name: "ngraph ONNXImporter"
graph {
node {
input: "x"
input: "x_scale"
input: "x_zero_point"
output: "y"
name: "node1"
op_type: "DequantizeLinear"
}
name: "test"
input {
name: "x"
type {
tensor_type {
elem_type: 2
shape {
dim {
dim_value: 4
}
}
}
}
}
input {
name: "x_scale"
type {
tensor_type {
elem_type: 1
shape {
}
}
}
}
input {
name: "x_zero_point"
type {
tensor_type {
elem_type: 2
shape {
}
}
}
}
output {
name: "y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
}
}
}
}
}
opset_import {
version: 10
}
ir_version: 3
producer_name: "ngraph ONNXImporter"
graph {
node {
input: "x"
input: "x_scale"
input: "x_zero_point"
output: "y"
name: "node1"
op_type: "DequantizeLinear"
}
name: "test"
input {
name: "x"
type {
tensor_type {
elem_type: 3
shape {
dim {
dim_value: 4
}
}
}
}
}
input {
name: "x_scale"
type {
tensor_type {
elem_type: 1
shape {
}
}
}
}
input {
name: "x_zero_point"
type {
tensor_type {
elem_type: 3
shape {
}
}
}
}
output {
name: "y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
}
}
}
}
}
opset_import {
version: 10
}
ir_version: 3
producer_name: "ngraph ONNXImporter"
graph {
node {
input: "X"
input: "scale"
input: "zero_point"
output: "Y"
name: "node1"
op_type: "DequantizeLinear"
attribute {
name: "axis"
i: 0
type: INT
}
}
name: "test"
input {
name: "X"
type {
tensor_type {
elem_type: 2
shape {
dim {
dim_value: 3
}
dim {
dim_value: 4
}
}
}
}
}
input {
name: "scale"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 3
}
}
}
}
}
input {
name: "zero_point"
type {
tensor_type {
elem_type: 2
shape {
dim {
dim_value: 3
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 3
}
dim {
dim_value: 4
}
}
}
}
}
}
opset_import {
version: 10
}
ir_version: 3
producer_name: "ngraph ONNXImporter"
graph {
node {
input: "X"
input: "scale"
input: "zero_point"
output: "Y"
name: "node1"
op_type: "DequantizeLinear"
attribute {
name: "axis"
i: 1
type: INT
}
}
name: "test"
input {
name: "X"
type {
tensor_type {
elem_type: 3
shape {
dim {
dim_value: 3
}
dim {
dim_value: 4
}
}
}
}
}
input {
name: "scale"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
}
}
}
}
input {
name: "zero_point"
type {
tensor_type {
elem_type: 3
shape {
dim {
dim_value: 4
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 3
}
dim {
dim_value: 4
}
}
}
}
}
}
opset_import {
version: 10
}
ir_version: 3
producer_name: "ngraph ONNXImporter"
graph {
node {
input: "X"
input: "scale"
input: "zero_point"
output: "Y"
name: "node1"
op_type: "DequantizeLinear"
attribute {
name: "axis"
i: 1
type: INT
}
}
name: "test"
input {
name: "X"
type {
tensor_type {
elem_type: 3
shape {
dim {
dim_value: 2
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
dim {
dim_value: 4
}
}
}
}
}
input {
name: "scale"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 3
}
}
}
}
}
input {
name: "zero_point"
type {
tensor_type {
elem_type: 3
shape {
dim {
dim_value: 3
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 2
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
dim {
dim_value: 4
}
}
}
}
}
}
opset_import {
version: 10
}
ir_version: 3
producer_name: "ngraph ONNXImporter"
graph {
node {
input: "X"
input: "scale"
input: "zero_point"
output: "Y"
name: "node1"
op_type: "DequantizeLinear"
attribute {
name: "axis"
i: -2
type: INT
}
}
name: "test"
input {
name: "X"
type {
tensor_type {
elem_type: 2
shape {
dim {
dim_value: 3
}
dim {
dim_value: 4
}
}
}
}
}
input {
name: "scale"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 3
}
}
}
}
}
input {
name: "zero_point"
type {
tensor_type {
elem_type: 2
shape {
dim {
dim_value: 3
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 3
}
dim {
dim_value: 4
}
}
}
}
}
}
opset_import {
version: 10
}
This diff is collapsed.
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