19 #include <boost/test/unit_test.hpp> 24 template<
typename armnn::DataType DataType>
28 unsigned int blockSize,
29 const float qScale = 1.0f,
30 const int32_t qOffset = 0)
32 using namespace armnn;
40 if (inputShape[dimensionIndices.GetHeightIndex()] % blockSize!=0
41 || inputShape[dimensionIndices.GetWidthIndex()] % blockSize!=0)
52 Connect(input, SpaceToDepth, inputTensorInfo, 0, 0);
56 Connect(SpaceToDepth, output, outputTensorInfo, 0, 0);
61 void SpaceToDepthEndToEnd(
const std::vector<armnn::BackendId>& backends,
65 std::vector<float>& inputData,
66 std::vector<float>& expectedOutputData,
67 const unsigned int blockSize)
69 using namespace armnn;
73 PermuteTensorNhwcToNchw<float>(inputTensorInfo, inputData);
74 PermuteTensorNhwcToNchw<float>(outputTensorInfo, expectedOutputData);
78 INetworkPtr net = CreateSpaceToDepthNetwork<DataType::Float32>(
84 BOOST_TEST_CHECKPOINT(
"Create a network");
86 std::map<int, std::vector<float>> inputTensorData = { { 0, inputData } };
87 std::map<int, std::vector<float>> expectedOutputTensorData = { { 0, expectedOutputData } };
89 EndToEndLayerTestImpl<DataType::Float32, DataType::Float32>(
92 expectedOutputTensorData,
100 using namespace armnn;
102 const unsigned int blockSize = 2;
110 std::vector<float> inputData = std::vector<float>(
112 1.0f, 2.0f, 3.0f, 4.0f
115 std::vector<float> expectedOutputData = std::vector<float>(
117 1.0f, 2.0f, 3.0f, 4.0f
120 SpaceToDepthEndToEnd(defaultBackends,
131 using namespace armnn;
133 const unsigned int blockSize = 2;
141 std::vector<float> inputData = std::vector<float>(
143 1.0f, 2.0f, 3.0f, 4.0f
146 std::vector<float> expectedOutputData = std::vector<float>(
148 1.0f, 2.0f, 3.0f, 4.0f
151 SpaceToDepthEndToEnd(defaultBackends,
162 using namespace armnn;
164 const unsigned int blockSize = 2;
172 std::vector<float> inputData = std::vector<float>(
174 1.4f, 2.3f, 3.2f, 4.1f, 5.4f, 6.3f, 7.2f, 8.1f
177 std::vector<float> expectedOutputData = std::vector<float>(
179 1.4f, 2.3f, 3.2f, 4.1f, 5.4f, 6.3f, 7.2f, 8.1f
182 SpaceToDepthEndToEnd(defaultBackends,
193 using namespace armnn;
195 const unsigned int blockSize = 2;
204 std::vector<float> inputData = std::vector<float>(
206 1.4f, 2.3f, 3.2f, 4.1f, 5.4f, 6.3f, 7.2f, 8.1f
209 std::vector<float> expectedOutputData = std::vector<float>(
211 1.4f, 2.3f, 3.2f, 4.1f, 5.4f, 6.3f, 7.2f, 8.1f
214 SpaceToDepthEndToEnd(defaultBackends,
void SpaceToDepthNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
void SpaceToDepthNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void SpaceToDepthNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
void SpaceToDepthNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
static INetworkPtr Create()
void SpaceToDepth(const TensorInfo &inputInfo, const TensorInfo &outputInfo, const SpaceToDepthDescriptor ¶ms, Decoder< float > &inputData, Encoder< float > &outputData)
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)
unsigned int m_BlockSize
Scalar specifying the input block size. It must be >= 1.
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
const TensorShape & GetShape() const
std::vector< armnn::BackendId > defaultBackends