Unverified Commit a22189dd authored by Shucai Xiao's avatar Shucai Xiao Committed by GitHub
Browse files

Imagescaler type mismatch (#450)



* support half type input for imagescaler operator

* clang format

* add missing onnx file for image scaler testing

* fixed a cppcheck error

* clang format
Co-authored-by: default avatarmvermeulen <5479696+mvermeulen@users.noreply.github.com>
parent 5592b921
......@@ -1018,11 +1018,12 @@ struct onnx_parser
auto&& bias_floats = attributes["bias"].floats();
bias = std::vector<float>(bias_floats.begin(), bias_floats.end());
}
auto input_lens = args.front()->get_shape().lens();
auto input_shape = args.front()->get_shape();
auto const& input_lens = input_shape.lens();
auto input_type = input_shape.type();
auto scale_val = prog.add_literal(scale);
auto bias_vals = prog.add_literal(
migraphx::literal{migraphx::shape{migraphx::shape::float_type, {bias.size()}}, bias});
auto scale_val = prog.add_literal(literal{shape{input_type}, {scale}});
auto bias_vals = prog.add_literal(literal{shape{input_type, {bias.size()}}, bias});
auto scale_tensor = prog.add_instruction(migraphx::op::scalar{input_lens}, scale_val);
auto img_scaled = prog.add_instruction(migraphx::op::mul{}, args.front(), scale_tensor);
......
......@@ -996,6 +996,20 @@ def imagescaler_test():
return ([node], [x], [y])
@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])
node = onnx.helper.make_node('ImageScaler',
inputs=['0'],
outputs=['1'],
bias=[0.01, 0.02, 0.03],
scale=0.5)
return ([node], [x], [y])
@onnx_test
def implicit_add_bcast_test():
x = helper.make_tensor_value_info('0', TensorProto.FLOAT, [2, 3, 4, 5])
......
......@@ -728,6 +728,25 @@ TEST_CASE(imagescaler_test)
EXPECT(p == prog);
}
TEST_CASE(imagescaler_half_test)
{
migraphx::program p;
migraphx::shape s{migraphx::shape::half_type, {1, 3, 16, 16}};
auto l0 = p.add_parameter("0", s);
auto scale_val =
p.add_literal(migraphx::literal{migraphx::shape{migraphx::shape::half_type}, {0.5f}});
auto bias_vals = p.add_literal(
migraphx::literal{migraphx::shape{migraphx::shape::half_type, {3}}, {0.01, 0.02, 0.03}});
auto scaled_tensor = p.add_instruction(migraphx::op::scalar{s.lens()}, scale_val);
auto img_scaled = p.add_instruction(migraphx::op::mul{}, l0, scaled_tensor);
auto bias_bcast = p.add_instruction(migraphx::op::broadcast{1, s.lens()}, bias_vals);
p.add_instruction(migraphx::op::add{}, img_scaled, bias_bcast);
auto prog = optimize_onnx("imagescaler_half_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(implicit_add_bcast_test)
{
migraphx::program p;
......
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