32 Connect(inputLayer, argMinMaxLayer, inputTensorInfo, 0, 0);
33 Connect(argMinMaxLayer, outputLayer, outputTensorInfo, 0, 0);
38 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
41 const std::vector<float>& inputData,
42 const std::vector<int32_t>& expectedOutputData,
45 const std::vector<armnn::BackendId>& backends)
47 const float qScale = armnn::IsQuantizedType<T>() ? 2.0f : 1.0f;
48 const int32_t qOffset = armnn::IsQuantizedType<T>() ? 2 : 0;
54 std::vector<T> qInputData = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
61 EndToEndLayerTestImpl<ArmnnType, armnn::DataType::Signed32>(std::move(network),
62 { { 0, qInputData } },
63 { { 0, expectedOutputData } },
67 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
68 void ArgMaxEndToEndSimple(
const std::vector<armnn::BackendId>& backends)
73 std::vector<float> inputData({ 6.0f, 2.0f, 8.0f, 10.0f, 9.0f });
74 std::vector<int32_t> expectedOutputData({ 3 });
76 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
85 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
86 void ArgMinEndToEndSimple(
const std::vector<armnn::BackendId>& backends)
91 std::vector<float> inputData({ 6.0f, 2.0f, 8.0f, 10.0f, 9.0f });
92 std::vector<int32_t> expectedOutputData({ 1 });
94 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
103 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
104 void ArgMaxAxis0EndToEnd(
const std::vector<armnn::BackendId>& backends)
109 std::vector<float> inputData({ 1.0f, 2.0f, 3.0f, 4.0f,
110 8.0f, 7.0f, 6.0f, 6.0f,
111 100.0f, 20.0f, 300.0f, 40.0f,
112 500.0f, 476.0f, 450.0f, 426.0f,
113 50.0f, 60.0f, 70.0f, 80.0f,
114 10.0f, 200.0f, 30.0f, 400.0f });
116 std::vector<int32_t> expectedOutputData({ 1, 2, 1, 2,
119 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
128 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
129 void ArgMinAxis0EndToEnd(
const std::vector<armnn::BackendId>& backends)
134 std::vector<float> inputData({ 1.0f, 2.0f, 3.0f, 4.0f,
135 8.0f, 7.0f, 6.0f, 6.0f,
136 100.0f, 20.0f, 300.0f, 40.0f,
137 500.0f, 476.0f, 450.0f, 426.0f,
138 50.0f, 60.0f, 70.0f, 80.0f,
139 10.0f, 200.0f, 30.0f, 400.0f });
141 std::vector<int32_t> expectedOutputData({ 0, 0, 0, 0,
144 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
153 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
154 void ArgMaxAxis1EndToEnd(
const std::vector<armnn::BackendId>& backends)
159 std::vector<float> inputData({ 1.0f, 2.0f, 3.0f, 4.0f,
160 8.0f, 7.0f, 6.0f, 6.0f,
161 100.0f, 20.0f, 300.0f, 40.0f,
162 500.0f, 476.0f, 450.0f, 426.0f,
163 50.0f, 60.0f, 70.0f, 80.0f,
164 10.0f, 200.0f, 30.0f, 400.0f });
166 std::vector<int32_t> expectedOutputData({ 1, 2, 1, 2,
169 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
178 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
179 void ArgMinAxis1EndToEnd(
const std::vector<armnn::BackendId>& backends)
184 std::vector<float> inputData({ 1.0f, 2.0f, 3.0f, 4.0f,
185 8.0f, 7.0f, 6.0f, 6.0f,
186 100.0f, 20.0f, 300.0f, 40.0f,
187 500.0f, 476.0f, 450.0f, 426.0f,
188 50.0f, 60.0f, 70.0f, 80.0f,
189 10.0f, 200.0f, 30.0f, 400.0f });
191 std::vector<int32_t> expectedOutputData({ 0, 0, 0, 0,
194 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
203 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
204 void ArgMaxAxis2EndToEnd(
const std::vector<armnn::BackendId>& backends)
209 std::vector<float> inputData({ 1.0f, 2.0f, 3.0f, 4.0f,
210 8.0f, 7.0f, 6.0f, 6.0f,
211 100.0f, 20.0f, 300.0f, 40.0f,
212 500.0f, 476.0f, 450.0f, 426.0f,
213 10.0f, 200.0f, 30.0f, 400.0f,
214 50.0f, 60.0f, 70.0f, 80.0f });
216 std::vector<int32_t> expectedOutputData({ 1, 1, 1, 1,
220 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
229 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
230 void ArgMinAxis2EndToEnd(
const std::vector<armnn::BackendId>& backends)
235 std::vector<float> inputData({ 1.0f, 2.0f, 3.0f, 4.0f,
236 8.0f, 7.0f, 6.0f, 6.0f,
237 100.0f, 20.0f, 300.0f, 40.0f,
238 500.0f, 476.0f, 450.0f, 426.0f,
239 10.0f, 200.0f, 30.0f, 400.0f,
240 50.0f, 60.0f, 70.0f, 80.0f });
242 std::vector<int32_t> expectedOutputData({ 0, 0, 0, 0,
246 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
255 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
256 void ArgMaxAxis3EndToEnd(
const std::vector<armnn::BackendId>& backends)
261 std::vector<float> inputData({ 1.0f, 3.0f, 6.0f, 7.0f,
262 8.0f, 7.0f, 6.0f, 6.0f,
263 100.0f, 20.0f, 300.0f, 40.0f,
264 500.0f, 476.0f, 450.0f, 426.0f,
265 10.0f, 200.0f, 30.0f, 400.0f,
266 50.0f, 60.0f, 70.0f, 80.0f });
268 std::vector<int32_t> expectedOutputData({ 3, 0,
272 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
281 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
282 void ArgMinAxis3EndToEnd(
const std::vector<armnn::BackendId>& backends)
287 std::vector<float> inputData({ 1.0f, 3.0f, 6.0f, 7.0f,
288 18.0f, 16.0f, 14.0f, 12.0f,
289 100.0f, 20.0f, 300.0f, 40.0f,
290 500.0f, 476.0f, 450.0f, 426.0f,
291 10.0f, 200.0f, 30.0f, 400.0f,
292 50.0f, 60.0f, 70.0f, 80.0f });
294 std::vector<int32_t> expectedOutputData({ 0, 3,
298 ArgMinMaxEndToEndImpl<ArmnnType>(inputShape,
ArgMinMaxFunction m_Function
Specify if the function is to find Min or Max.
int m_Axis
Axis to reduce across the input tensor.
static INetworkPtr Create()
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
void Connect(armnn::IConnectableLayer *from, armnn::IConnectableLayer *to, const armnn::TensorInfo &tensorInfo, unsigned int fromIndex, unsigned int toIndex)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
An ArgMinMaxDescriptor for ArgMinMaxLayer.