ArmNN
 22.02
Multiplication.cpp File Reference

Go to the source code of this file.

Functions

 TEST_SUITE ("TensorflowLiteParser_Multiplication")
 

Function Documentation

◆ TEST_SUITE()

TEST_SUITE ( "TensorflowLiteParser_Multiplication"  )

Definition at line 9 of file Multiplication.cpp.

References ParserFlatbuffersFixture::Setup(), and TEST_CASE_FIXTURE().

10 {
11 struct MultiplicationFixture : public ParserFlatbuffersFixture
12 {
13  explicit MultiplicationFixture(const std::string & inputShape1,
14  const std::string & inputShape2,
15  const std::string & outputShape,
16  const std::string & activation="NONE")
17  {
18  m_JsonString = R"(
19  {
20  "version": 3,
21  "operator_codes": [ { "builtin_code": "MUL" } ],
22  "subgraphs": [ {
23  "tensors": [
24  {
25  "shape": )" + inputShape1 + R"(,
26  "type": "FLOAT32",
27  "buffer": 0,
28  "name": "inputTensor1",
29  "quantization": {
30  "min": [ 0.0 ],
31  "max": [ 255.0 ],
32  "scale": [ 1.0 ],
33  "zero_point": [ 0 ],
34  }
35  },
36  {
37  "shape": )" + inputShape2 + R"(,
38  "type": "FLOAT32",
39  "buffer": 1,
40  "name": "inputTensor2",
41  "quantization": {
42  "min": [ 0.0 ],
43  "max": [ 255.0 ],
44  "scale": [ 1.0 ],
45  "zero_point": [ 0 ],
46  }
47  },
48  {
49  "shape": )" + outputShape + R"( ,
50  "type": "FLOAT32",
51  "buffer": 2,
52  "name": "outputTensor",
53  "quantization": {
54  "min": [ 0.0 ],
55  "max": [ 255.0 ],
56  "scale": [ 1.0 ],
57  "zero_point": [ 0 ],
58  }
59  }
60  ],
61  "inputs": [ 0, 1 ],
62  "outputs": [ 2 ],
63  "operators": [
64  {
65  "opcode_index": 0,
66  "inputs": [ 0, 1 ],
67  "outputs": [ 2 ],
68  "builtin_options_type": "MulOptions",
69  "builtin_options": {
70  "fused_activation_function": )" + activation + R"(
71  },
72  "custom_options_format": "FLEXBUFFERS"
73  }
74  ],
75  } ],
76  "buffers" : [
77  { },
78  { }
79  ]
80  }
81  )";
82  Setup();
83  }
84 };
85 
86 struct SimpleMultiplicationFixture : public MultiplicationFixture
87 {
88  SimpleMultiplicationFixture() : MultiplicationFixture("[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]") {}
89 };
90 
91 TEST_CASE_FIXTURE(SimpleMultiplicationFixture, "ParseMultiplication")
92 {
93  using armnn::DataType;
94  RunTest<4, DataType::Float32>(0, {{ "inputTensor1", { 0.0f, 1.0f, 2.0f,
95  3.0f, 4.0f, 5.0f,
96  6.0f, 7.0f, 8.0f,
97  9.0f, 10.0f, 11.0f } },
98  { "inputTensor2", { 1.0f, 1.0f, 1.0f,
99  5.0f, 5.0f, 5.0f,
100  1.0f, 1.0f, 1.0f,
101  5.0f, 5.0f, 5.0f} } },
102  {{ "outputTensor", { 0.0f, 1.0f, 2.0f,
103  15.0f, 20.0f, 25.0f,
104  6.0f, 7.0f, 8.0f,
105  45.0f, 50.0f, 55.0f } } });
106 }
107 
108 struct MultiplicationBroadcastFixture4D1D : public MultiplicationFixture
109 {
110  MultiplicationBroadcastFixture4D1D() : MultiplicationFixture("[ 1, 2, 2, 3 ]", "[ 1 ]", "[ 1, 2, 2, 3 ]") {}
111 };
112 
113 TEST_CASE_FIXTURE(MultiplicationBroadcastFixture4D1D, "ParseMultiplicationBroadcast4D1D")
114 {
115  using armnn::DataType;
116  RunTest<4, DataType::Float32>(0, {{ "inputTensor1", { 0.0f, 1.0f, 2.0f,
117  3.0f, 4.0f, 5.0f,
118  6.0f, 7.0f, 8.0f,
119  9.0f, 10.0f, 11.0f } },
120  { "inputTensor2", { 5.0f } } },
121  {{ "outputTensor", { 0.0f, 5.0f, 10.0f,
122  15.0f, 20.0f, 25.0f,
123  30.0f, 35.0f, 40.0f,
124  45.0f, 50.0f, 55.0f } } });
125 }
126 
127 struct MultiplicationBroadcastFixture1D4D : public MultiplicationFixture
128 {
129  MultiplicationBroadcastFixture1D4D() : MultiplicationFixture("[ 1 ]", "[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]") {}
130 };
131 
132 TEST_CASE_FIXTURE(MultiplicationBroadcastFixture1D4D, "ParseMultiplicationBroadcast1D4D")
133 {
134  using armnn::DataType;
135  RunTest<4, DataType::Float32>(0, {{ "inputTensor1", { 3.0f } },
136  { "inputTensor2", { 0.0f, 1.0f, 2.0f,
137  3.0f, 4.0f, 5.0f,
138  6.0f, 7.0f, 8.0f,
139  9.0f, 10.0f, 11.0f } } },
140  {{ "outputTensor", { 0.0f, 3.0f, 6.0f,
141  9.0f, 12.0f, 15.0f,
142  18.0f, 21.0f, 24.0f,
143  27.0f, 30.0f, 33.0f } } });
144 }
145 
146 }
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
DataType
Definition: Types.hpp:35
void Setup(bool testDynamic=true)