Commit cf85b4c6 authored by kahmed10's avatar kahmed10 Committed by mvermeulen
Browse files

Conv transpose op (#429)



* initial testing

* add shape op

* formatting

* add env variable for batch sizes

* formatting

* progress on driver

* progress on driver

* cleanup

* cleanup

* add and modified prev tests

* formatting

* remove comment

* add shape op test

* formatting

* manually insert shape op in test

* formatting

* create options struct for parsers

* formatting

* Add documentation for python

* Fix c++ documentaion

* add documentation to parser

* formatting

* add argmin and tests

* fix doc and definitions

* formatting

* revert test functions

* formatting

* cpu impl of conv_transpose

* more work on conv_transpose

* rename files, added extratests

* formatting

* add more tests

* formatting

* changes

* fix tests

* fix tidy

* formatting

* fixed function parameter

* fix function parameter

* add cpu ops test

* formatting
Co-authored-by: default avatarPaul Fultz II <pfultz2@yahoo.com>
Co-authored-by: default avatarmvermeulen <5479696+mvermeulen@users.noreply.github.com>
parent 12ff54a7
...@@ -410,6 +410,79 @@ TEST_CASE(cosh_test) ...@@ -410,6 +410,79 @@ TEST_CASE(cosh_test)
EXPECT(p == prog); EXPECT(p == prog);
} }
TEST_CASE(deconv_test)
{
migraphx::program p;
auto l0 = p.add_parameter("x", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l1 = p.add_parameter("w", {migraphx::shape::float_type, {1, 1, 3, 3}});
p.add_instruction(migraphx::op::deconvolution{}, l0, l1);
auto prog = optimize_onnx("deconv_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(deconv_bias_test)
{
migraphx::program p;
auto l0 = p.add_parameter("x", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l1 = p.add_parameter("w", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l2 = p.add_parameter("b", {migraphx::shape::float_type, {1}});
uint64_t axis = 1;
auto l3 = p.add_instruction(migraphx::op::deconvolution{}, l0, l1);
auto l4 = p.add_instruction(migraphx::op::broadcast{axis, l3->get_shape().lens()}, l2);
p.add_instruction(migraphx::op::add{}, l3, l4);
auto prog = optimize_onnx("deconv_bias_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(deconv_input_pads_strides_test)
{
migraphx::program p;
auto l0 = p.add_parameter("x", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l1 = p.add_parameter("w", {migraphx::shape::float_type, {1, 2, 3, 3}});
p.add_instruction(migraphx::op::deconvolution{{1, 1}, {3, 2}}, l0, l1);
auto prog = optimize_onnx("deconv_input_pads_strides_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(deconv_input_pads_asymm_test)
{
migraphx::program p;
auto l0 = p.add_parameter("x", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l1 = p.add_parameter("w", {migraphx::shape::float_type, {1, 2, 3, 3}});
auto l2 = p.add_instruction(migraphx::op::deconvolution{{0, 0}, {3, 2}}, l0, l1);
p.add_instruction(migraphx::op::slice{{0, 1, 2, 3}, {0, 0, 0, 0}, {1, 2, 8, 6}}, l2);
auto prog = optimize_onnx("deconv_input_pads_asymm_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(deconv_output_shape_test)
{
migraphx::program p;
auto l0 = p.add_parameter("x", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l1 = p.add_parameter("w", {migraphx::shape::float_type, {1, 2, 3, 3}});
auto l2 = p.add_instruction(migraphx::op::deconvolution{{0, 0}, {3, 2}}, l0, l1);
p.add_instruction(migraphx::op::pad{{0, 0, 0, 0, 0, 0, 1, 1}}, l2);
auto prog = optimize_onnx("deconv_output_shape_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(deconv_output_padding_test)
{
migraphx::program p;
auto l0 = p.add_parameter("x", {migraphx::shape::float_type, {1, 1, 3, 3}});
auto l1 = p.add_parameter("w", {migraphx::shape::float_type, {1, 2, 3, 3}});
auto l2 = p.add_instruction(migraphx::op::deconvolution{{0, 0}, {3, 2}}, l0, l1);
p.add_instruction(migraphx::op::pad{{0, 0, 0, 0, 0, 0, 1, 1}}, l2);
auto prog = optimize_onnx("deconv_output_padding_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(dropout_test) TEST_CASE(dropout_test)
{ {
migraphx::program p; 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