blob: 10780c95e14cba32c743e91af5a119b313f36a2a [file] [log] [blame]
Bruno Goncalvesf803f782018-12-18 13:40:30 -02001//
Finn Williamsb49ed182021-06-29 15:50:08 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Bruno Goncalvesf803f782018-12-18 13:40:30 -02003// SPDX-License-Identifier: MIT
4//
5
Bruno Goncalvesf803f782018-12-18 13:40:30 -02006#include "ParserFlatbuffersFixture.hpp"
Bruno Goncalvesf803f782018-12-18 13:40:30 -02007
Bruno Goncalvesf803f782018-12-18 13:40:30 -02008
Sadik Armagan1625efc2021-06-10 18:24:34 +01009TEST_SUITE("TensorflowLiteParser_Multiplication")
10{
Bruno Goncalvesf803f782018-12-18 13:40:30 -020011struct 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
86struct SimpleMultiplicationFixture : public MultiplicationFixture
87{
88 SimpleMultiplicationFixture() : MultiplicationFixture("[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]") {}
89};
90
Sadik Armagan1625efc2021-06-10 18:24:34 +010091TEST_CASE_FIXTURE(SimpleMultiplicationFixture, "ParseMultiplication")
Bruno Goncalvesf803f782018-12-18 13:40:30 -020092{
Matthew Bentham0edd4672019-01-22 17:26:59 +000093 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 } } });
Bruno Goncalvesf803f782018-12-18 13:40:30 -0200106}
107
Bruno Goncalves9c761a62018-12-27 14:20:35 -0200108struct MultiplicationBroadcastFixture4D1D : public MultiplicationFixture
109{
110 MultiplicationBroadcastFixture4D1D() : MultiplicationFixture("[ 1, 2, 2, 3 ]", "[ 1 ]", "[ 1, 2, 2, 3 ]") {}
111};
112
Sadik Armagan1625efc2021-06-10 18:24:34 +0100113TEST_CASE_FIXTURE(MultiplicationBroadcastFixture4D1D, "ParseMultiplicationBroadcast4D1D")
Bruno Goncalves9c761a62018-12-27 14:20:35 -0200114{
Matthew Bentham0edd4672019-01-22 17:26:59 +0000115 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 } } });
Bruno Goncalves9c761a62018-12-27 14:20:35 -0200125}
126
127struct MultiplicationBroadcastFixture1D4D : public MultiplicationFixture
128{
129 MultiplicationBroadcastFixture1D4D() : MultiplicationFixture("[ 1 ]", "[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]") {}
130};
131
Sadik Armagan1625efc2021-06-10 18:24:34 +0100132TEST_CASE_FIXTURE(MultiplicationBroadcastFixture1D4D, "ParseMultiplicationBroadcast1D4D")
Bruno Goncalves9c761a62018-12-27 14:20:35 -0200133{
Matthew Bentham0edd4672019-01-22 17:26:59 +0000134 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 } } });
Bruno Goncalves9c761a62018-12-27 14:20:35 -0200144}
145
Sadik Armagan1625efc2021-06-10 18:24:34 +0100146}