Commit 2ee0f9e8 authored by kahmed10's avatar kahmed10 Committed by mvermeulen
Browse files

Mlperf models resnet50 and mobilenetv1 support (#406)



* 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
Co-authored-by: default avatarPaul Fultz II <pfultz2@yahoo.com>
parent 7c35bf11
import numpy as np
import tensorflow as tf
from tensorflow.core.framework import attr_value_pb2
def tf_test(op_test):
......@@ -30,6 +31,20 @@ def add_bcast_test(g1):
tf.math.add(g1_input, g2_input, name='add_bcast1')
@tf_test
def argmax_test(g1):
with g1.as_default():
g1_input = tf.placeholder(tf.float32, shape=(3, 4, 5, 6), name='0')
tf.argmax(g1_input, axis=2, name='argmax1')
@tf_test
def argmin_test(g1):
with g1.as_default():
g1_input = tf.placeholder(tf.float32, shape=(3, 4, 5, 6), name='0')
tf.argmin(g1_input, axis=2, name='argmin1')
@tf_test
def assert_less_equal_test(g1):
with g1.as_default():
......@@ -259,6 +274,13 @@ def rsqrt_test(g1):
tf.math.rsqrt(g1_input, 'rsqrt')
@tf_test
def shape_test(g1):
with g1.as_default():
g1_input = tf.placeholder(tf.float32, shape=(1, 3, 16, 16), name='0')
g1.create_op(op_type='Shape', inputs=[g1_input])
@tf_test
def slice_test(g1):
with g1.as_default():
......@@ -361,3 +383,10 @@ def transpose_test(g1):
with g1.as_default():
g1_input = tf.placeholder(tf.float32, shape=(1, 3, 16, 16), name='0')
tf.transpose(g1_input, perm=[0, 2, 3, 1], name='transpose')
@tf_test
def variable_batch_test(g1):
with g1.as_default():
g1_input = tf.placeholder(tf.float32, shape=(0, 3, 16, 16), name='0')
tf.identity(g1_input, name='identity')
:
0 Placeholder*
dtype0*
shape:
*
ShapeShape0*
T0*
out_type0"&
\ No newline at end of file
......@@ -11,9 +11,14 @@
#include <migraphx/tf.hpp>
#include "test.hpp"
migraphx::program parse_tf(const std::string& name, bool is_nhwc)
{
return migraphx::parse_tf(name, migraphx::tf_options{is_nhwc, 1});
}
migraphx::program optimize_tf(const std::string& name, bool is_nhwc)
{
auto prog = migraphx::parse_tf(name, is_nhwc);
auto prog = migraphx::parse_tf(name, migraphx::tf_options{is_nhwc, 1});
if(is_nhwc)
migraphx::run_passes(prog,
{migraphx::simplify_reshapes{},
......@@ -48,6 +53,30 @@ TEST_CASE(add_bcast_test)
EXPECT(p == prog);
}
TEST_CASE(argmax_test)
{
migraphx::program p;
auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {3, 4, 5, 6}});
p.add_literal(migraphx::literal{migraphx::shape{migraphx::shape::int32_type}, {2}});
auto ins = p.add_instruction(migraphx::op::argmax{2}, l0);
p.add_instruction(migraphx::op::squeeze{{2}}, ins);
auto prog = parse_tf("argmax_test.pb", false);
EXPECT(p == prog);
}
TEST_CASE(argmin_test)
{
migraphx::program p;
auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {3, 4, 5, 6}});
p.add_literal(migraphx::literal{migraphx::shape{migraphx::shape::int32_type}, {2}});
auto ins = p.add_instruction(migraphx::op::argmin{2}, l0);
p.add_instruction(migraphx::op::squeeze{{2}}, ins);
auto prog = parse_tf("argmin_test.pb", false);
EXPECT(p == prog);
}
TEST_CASE(assert_less_equal_test)
{
migraphx::program p;
......@@ -444,6 +473,17 @@ TEST_CASE(rsqrt_test)
EXPECT(p == prog);
}
TEST_CASE(shape_test)
{
migraphx::program p;
p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3, 16, 16}});
p.add_literal(
migraphx::literal{migraphx::shape{migraphx::shape::int32_type, {4}}, {1, 3, 16, 16}});
auto prog = optimize_tf("shape_test.pb", false);
EXPECT(p == prog);
}
TEST_CASE(slice_test)
{
migraphx::program p;
......@@ -489,7 +529,7 @@ TEST_CASE(split_test)
p.add_instruction(migraphx::op::concat{1}, l1, l2);
p.add_instruction(migraphx::op::concat{1}, l2, l3);
auto prog = migraphx::parse_tf("split_test.pb", false);
auto prog = parse_tf("split_test.pb", false);
EXPECT(p == prog);
}
......@@ -502,7 +542,7 @@ TEST_CASE(split_test_one_output)
p.add_literal(1); // split axis
p.add_instruction(migraphx::op::identity{}, l0);
auto prog = migraphx::parse_tf("split_test_one_output.pb", false);
auto prog = parse_tf("split_test_one_output.pb", false);
EXPECT(p == prog);
}
......@@ -524,7 +564,7 @@ TEST_CASE(split_test_vector_as_input)
p.add_instruction(migraphx::op::concat{1}, l1, l2);
p.add_instruction(migraphx::op::concat{1}, l2, l3);
auto prog = migraphx::parse_tf("split_test_vector_as_input.pb", false);
auto prog = parse_tf("split_test_vector_as_input.pb", false);
EXPECT(p == prog);
}
......@@ -597,7 +637,7 @@ TEST_CASE(stridedslice_masks_test)
auto l1 = p.add_instruction(migraphx::op::transpose{{0, 2, 3, 1}}, l0);
auto l2 = p.add_instruction(op, l1);
p.add_instruction(migraphx::op::transpose{{0, 3, 1, 2}}, l2);
auto prog = migraphx::parse_tf("stridedslice_masks_test.pb", true);
auto prog = parse_tf("stridedslice_masks_test.pb", true);
EXPECT(p == prog);
}
......@@ -608,7 +648,7 @@ TEST_CASE(sub_test)
auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 2, 2, 3}});
auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {1, 2, 2, 3}});
p.add_instruction(migraphx::op::sub{}, l0, l1);
auto prog = migraphx::parse_tf("sub_test.pb", false);
auto prog = parse_tf("sub_test.pb", false);
EXPECT(p == prog);
}
......@@ -619,7 +659,7 @@ TEST_CASE(tanh_test)
auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 2, 2, 3}});
auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {1, 2, 2, 3}});
p.add_instruction(migraphx::op::sub{}, l0, l1);
auto prog = migraphx::parse_tf("sub_test.pb", false);
auto prog = parse_tf("sub_test.pb", false);
EXPECT(p == prog);
}
......@@ -636,4 +676,14 @@ TEST_CASE(transpose_test)
EXPECT(p == prog);
}
TEST_CASE(variable_batch_test)
{
migraphx::program p;
auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3, 16, 16}});
p.add_instruction(migraphx::op::identity{}, l0);
auto prog = optimize_tf("variable_batch_test.pb", false);
EXPECT(p == prog);
}
int main(int argc, const char* argv[]) { test::run(argc, argv); }
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