blob: 4630a9004f11c9e33f76076864ce7d974b9027e0 [file] [log] [blame]
Matthew Sloyan080ffd82023-04-24 12:53:04 +01001//
2// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "ConvolutionTestHelper.hpp"
7
8#include <armnn_delegate.hpp>
9
10#include <flatbuffers/flatbuffers.h>
11#include <tensorflow/lite/interpreter.h>
12#include <tensorflow/lite/kernels/register.h>
13#include <tensorflow/lite/model.h>
14#include <schema_generated.h>
15#include <tensorflow/lite/version.h>
16
17#include <doctest/doctest.h>
18
19namespace armnnDelegate
20{
21
22void TransposeConvInt8Test(std::vector<armnn::BackendId>& backends)
23{
24 // Set input data
25 std::vector<int32_t> transposeTensorShape { 4 };
26 std::vector<int32_t> filterShape { 1, 2, 2, 1 };
27 std::vector<int32_t> inputShape { 1, 2, 2, 1 };
28 std::vector<int32_t> outputShape { 1, 3, 3, 1 };
29
30 std::vector<int32_t> transposeData = { 1, 3, 3, 1 };
31 static std::vector<int8_t> inputValues = { 1, 2, 3, 4 };
32 std::vector<int8_t> filterValues = { 0, 1, 2, 4 };
33 std::vector<int8_t> expectedOutputValues =
34 {
35 0, 1, 2,
36 2, 11, 12,
37 6, 20, 16
38 };
39
40 tflite::Padding padding = tflite::Padding_VALID;
41 TransposeConvTest<int8_t>(backends,
42 ::tflite::TensorType_INT8,
43 1, // strideX
44 1, // strideY
45 padding,
46 transposeTensorShape,
47 filterShape,
48 inputShape,
49 outputShape,
50 transposeData,
51 filterValues,
52 inputValues,
53 expectedOutputValues);
54}
55
56void TransposeConvFp32Test(std::vector<armnn::BackendId>& backends)
57{
58 std::vector<int32_t> transposeTensorShape { 4 };
59 std::vector<int32_t> filterShape { 1, 2, 2, 1 };
60 std::vector<int32_t> inputShape { 1, 2, 2, 1 };
61 std::vector<int32_t> outputShape { 1, 3, 3, 1 };
62
63 std::vector<int32_t> transposeData = { 1, 3, 3, 1 };
64 static std::vector<float> inputValues = { 1, 2, 3, 4 };
65 std::vector<float> filterValues = { 0, 1, 2, 4 };
66 std::vector<float> expectedOutputValues =
67 {
68 0, 1, 2,
69 2, 11, 12,
70 6, 20, 16
71 };
72
73 tflite::Padding padding = tflite::Padding_VALID;
74 TransposeConvTest<float>(backends,
75 ::tflite::TensorType_FLOAT32,
76 1, // strideX
77 1, // strideY
78 padding,
79 transposeTensorShape,
80 filterShape,
81 inputShape,
82 outputShape,
83 transposeData,
84 filterValues,
85 inputValues,
86 expectedOutputValues);
87}
88
89TEST_SUITE("TransposeConv_CpuRef_Test")
90{
91
92TEST_CASE ("TransposeConv_CpuRef_Fp32_Test")
93{
94 std::vector <armnn::BackendId> backends = {armnn::Compute::CpuRef};
95 TransposeConvFp32Test(backends);
96}
97
98TEST_CASE ("TransposeConv_CpuRef_Int8_Test")
99{
100 std::vector <armnn::BackendId> backends = {armnn::Compute::CpuRef};
101 TransposeConvInt8Test(backends);
102}
103
104} // End of TEST_SUITE(TransposeConv_CpuRef_Test)
105
106TEST_SUITE("TransposeConv_CpuAcc_Test")
107{
108
109TEST_CASE ("TransposeConv_CpuAcc_Fp32_Test")
110{
111 std::vector <armnn::BackendId> backends = {armnn::Compute::CpuAcc};
112 TransposeConvFp32Test(backends);
113}
114
115TEST_CASE ("TransposeConv_CpuAcc_Int8_Test")
116{
117 std::vector <armnn::BackendId> backends = {armnn::Compute::CpuAcc};
118 TransposeConvInt8Test(backends);
119}
120
121} // End of TEST_SUITE(TransposeConv_CpuAcc_Test)
122
123TEST_SUITE("TransposeConv_GpuAcc_Test")
124{
125
126TEST_CASE ("TransposeConv_GpuAcc_Fp32_Test")
127{
128 std::vector <armnn::BackendId> backends = {armnn::Compute::GpuAcc};
129 TransposeConvFp32Test(backends);
130}
131
132TEST_CASE ("TransposeConv_GpuAcc_Int8_Test")
133{
134 std::vector <armnn::BackendId> backends = {armnn::Compute::GpuAcc};
135 TransposeConvInt8Test(backends);
136}
137
138} // End of TEST_SUITE(TransposeConv_GpuAcc_Test)
139
140} // namespace armnnDelegate