ArmNN
 21.02
Minimum.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <boost/test/unit_test.hpp>
9 
10 BOOST_AUTO_TEST_SUITE(TensorflowParser)
11 
12 struct MinimumFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser>
13 {
14  MinimumFixture()
15  {
16  m_Prototext = R"(
17  node {
18  name: "input0"
19  op: "Placeholder"
20  attr {
21  key: "dtype"
22  value {
23  type: DT_FLOAT
24  }
25  }
26  attr {
27  key: "shape"
28  value {
29  shape {
30  }
31  }
32  }
33  }
34  node {
35  name: "input1"
36  op: "Placeholder"
37  attr {
38  key: "dtype"
39  value {
40  type: DT_FLOAT
41  }
42  }
43  attr {
44  key: "shape"
45  value {
46  shape {
47  }
48  }
49  }
50  }
51  node {
52  name: "output"
53  op: "Minimum"
54  input: "input0"
55  input: "input1"
56  attr {
57  key: "T"
58  value {
59  type: DT_FLOAT
60  }
61  }
62  }
63  )";
64  }
65 };
66 
67 BOOST_FIXTURE_TEST_CASE(ParseMininumUnsupportedBroadcast, MinimumFixture)
68 {
69  BOOST_REQUIRE_THROW(Setup({ { "input0", {2, 3} },
70  { "input1", {1, 2, 2, 3} } },
71  { "output" }),
73 }
74 
75 struct MinimumFixtureAutoSetup : public MinimumFixture
76 {
77  MinimumFixtureAutoSetup(const armnn::TensorShape& input0Shape,
78  const armnn::TensorShape& input1Shape)
79  : MinimumFixture()
80  {
81  Setup({ { "input0", input0Shape },
82  { "input1", input1Shape } },
83  { "output" });
84  }
85 };
86 
87 struct MinimumFixture4D : public MinimumFixtureAutoSetup
88 {
89  MinimumFixture4D()
90  : MinimumFixtureAutoSetup({1, 2, 2, 3}, {1, 2, 2, 3}) {}
91 };
92 
93 BOOST_FIXTURE_TEST_CASE(ParseMinimum4D, MinimumFixture4D)
94 {
95  RunTest<4>({ { "input0", { 0.0f, 1.0f, 2.0f,
96  3.0f, 4.0f, 5.0f,
97  6.0f, 7.0f, 8.0f,
98  9.0f, 10.0f, 11.0f } },
99  { "input1", { 0.0f, 0.0f, 0.0f,
100  5.0f, 5.0f, 5.0f,
101  7.0f, 7.0f, 7.0f,
102  9.0f, 9.0f, 9.0f } } },
103  { { "output", { 0.0f, 0.0f, 0.0f,
104  3.0f, 4.0f, 5.0f,
105  6.0f, 7.0f, 7.0f,
106  9.0f, 9.0f, 9.0f } } });
107 }
108 
109 struct MinimumBroadcastFixture4D : public MinimumFixtureAutoSetup
110 {
111  MinimumBroadcastFixture4D()
112  : MinimumFixtureAutoSetup({1, 1, 2, 1}, {1, 2, 1, 3}) {}
113 };
114 
115 BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast4D, MinimumBroadcastFixture4D)
116 {
117  RunTest<4>({ { "input0", { 2.0f,
118  4.0f } },
119  { "input1", { 1.0f, 2.0f, 3.0f,
120  4.0f, 5.0f, 6.0f } } },
121  { { "output", { 1.0f, 2.0f, 2.0f,
122  1.0f, 2.0f, 3.0f,
123  2.0f, 2.0f, 2.0f,
124  4.0f, 4.0f, 4.0f } } });
125 }
126 
127 struct MinimumBroadcastFixture4D1D : public MinimumFixtureAutoSetup
128 {
129  MinimumBroadcastFixture4D1D()
130  : MinimumFixtureAutoSetup({1, 2, 2, 3}, {1}) {}
131 };
132 
133 BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast4D1D, MinimumBroadcastFixture4D1D)
134 {
135  RunTest<4>({ { "input0", { 0.0f, 1.0f, 2.0f,
136  3.0f, 4.0f, 5.0f,
137  6.0f, 7.0f, 8.0f,
138  9.0f, 10.0f, 11.0f } },
139  { "input1", { 5.0f } } },
140  { { "output", { 0.0f, 1.0f, 2.0f,
141  3.0f, 4.0f, 5.0f,
142  5.0f, 5.0f, 5.0f,
143  5.0f, 5.0f, 5.0f } } });
144 }
145 
146 struct MinimumBroadcastFixture1D4D : public MinimumFixtureAutoSetup
147 {
148  MinimumBroadcastFixture1D4D()
149  : MinimumFixtureAutoSetup({3}, {1, 2, 2, 3}) {}
150 };
151 
152 BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast1D4D, MinimumBroadcastFixture1D4D)
153 {
154  RunTest<4>({ { "input0", { 5.0f, 6.0f, 7.0f } },
155  { "input1", { 0.0f, 1.0f, 2.0f,
156  3.0f, 4.0f, 5.0f,
157  6.0f, 7.0f, 8.0f,
158  9.0f, 10.0f, 11.0f } } },
159  { { "output", { 0.0f, 1.0f, 2.0f,
160  3.0f, 4.0f, 5.0f,
161  5.0f, 6.0f, 7.0f,
162  5.0f, 6.0f, 7.0f } } });
163 }
164 
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
BOOST_FIXTURE_TEST_CASE(ParseMinimum4D, MinimumFixture4D)
Definition: Minimum.cpp:93
BOOST_AUTO_TEST_SUITE_END()