6 #include "../TestUtils.hpp" 11 #include <boost/test/unit_test.hpp> 13 using namespace armnn;
27 auto input = network->AddInputLayer(0,
"input");
29 input->GetOutputSlot(0).SetTensorInfo(inputInfo);
34 permute->GetOutputSlot(0).SetTensorInfo(permuteInfo);
35 input->GetOutputSlot(0).Connect(permute->GetInputSlot(0));
41 auto batchToSpace = network->AddBatchToSpaceNdLayer(batchToSpaceDesc,
"batchToSpace");
43 batchToSpace->GetOutputSlot(0).SetTensorInfo(batchToSpaceInfo);
44 permute->GetOutputSlot(0).Connect(batchToSpace->GetInputSlot(0));
46 auto output = network->AddOutputLayer(0,
"output");
47 batchToSpace->GetOutputSlot(0).Connect(output->GetInputSlot(0));
59 Graph graph =
static_cast<Network*
>(network.get())->GetGraph();
62 BOOST_TEST(
CheckSequence(graph.
cbegin(), graph.
cend(), &IsLayerOfType<InputLayer>, &IsLayerOfType<PermuteLayer>,
63 &IsLayerOfType<BatchToSpaceNdLayer>, &IsLayerOfType<OutputLayer>));
69 auto checkDepthToSpace = [](
const Layer*
const layer) ->
bool {
70 return IsLayerOfType<DepthToSpaceLayer>(layer) &&
71 static_cast<const DepthToSpaceLayer*>(layer)->GetParameters().m_BlockSize == 2 &&
77 &IsLayerOfType<OutputLayer>));
80 std::list<std::string> testRelatedLayers = {
"batchToSpace",
"permute" };
81 BOOST_TEST(CheckRelatedLayers<DepthToSpaceLayer>(graph, testRelatedLayers));
85 #if defined(ARMNNREF_ENABLED) 98 BOOST_TEST(
CheckSequence(optGraph.cbegin(), optGraph.cend(), &IsLayerOfType<InputLayer>,
99 &IsLayerOfType<DepthToSpaceLayer>, &IsLayerOfType<OutputLayer>));
103 runtime->LoadNetwork(netId, std::move(optimizedNetwork));
105 std::vector<float> inputData{
108 1.0f, 2.0f, 3.0f, 4.0f, 10.0f, 20.0f, 30.0f, 40.0f, 100.0f, 200.0f, 300.0f, 400.0f,
109 -1.0f, -2.0f, -3.0f, -4.0f, -10.0f, -20.0f, -30.0f, -40.0f, -100.0f, -200.0f, -300.0f, -400.0f,
114 std::vector<float> outputData(4 * 6);
117 runtime->EnqueueWorkload(netId, inputs, outputs);
121 std::vector<float> expectedOutput = {
124 1.0f, 2.0f, 10.0f, 20.0f, 100.0f, 200.0f,
125 3.0f, 4.0f, 30.0f, 40.0f, 300.0f, 400.0f,
127 -1.0f, -2.0f, -10.0f, -20.0f, -100.0f, -200.0f,
128 -3.0f, -4.0f, -30.0f, -40.0f, -300.0f, -400.0f,
131 BOOST_TEST(outputData == expectedOutput);
This layer represents a DepthToSpace operation.
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
OptimizeForConnection< PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl > PermuteAndBatchToSpaceAsDepthToSpace
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
static void Pass(Graph &graph, const Optimizations &optimizations)
bool CheckSequence(const armnn::Graph::ConstIterator first, const armnn::Graph::ConstIterator last)
Private implementation of INetwork.
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
static INetworkPtr Create()
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
CPU Execution: Reference C++ kernels.
static IRuntimePtr Create(const CreationOptions &options)
ConstIterator cbegin() const
Returns const iterator pointing to the beginning of the list. Lowercase for range-based for loops...
Optimizer::Optimizations MakeOptimizations(Args &&... args)
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
ConstIterator cend() const
Returns const iterator pointing to the end of the list. Lowercase for range-based for loops...
A PermuteDescriptor for the PermuteLayer.
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
std::vector< unsigned int > m_BlockShape
Block shape values.