19 #include <boost/test/unit_test.hpp> 24 template<
typename armnn::DataType DataType>
31 const float qScale = 1.0f,
32 const int32_t qOffset = 0)
34 using namespace armnn;
42 instanceNormalizationDesc.
m_Gamma = gamma;
43 instanceNormalizationDesc.
m_Beta = beta;
44 instanceNormalizationDesc.
m_Eps = eps;
47 IConnectableLayer* instanceNormalization = net->AddInstanceNormalizationLayer(instanceNormalizationDesc,
48 "InstanceNormalization");
50 Connect(input, instanceNormalization, inputTensorInfo, 0, 0);
54 Connect(instanceNormalization, output, outputTensorInfo, 0, 0);
59 void InstanceNormalizationEndToEnd(
const std::vector<armnn::BackendId>& backends,
63 std::vector<float>& inputData,
64 std::vector<float>& expectedOutputData,
69 using namespace armnn;
73 PermuteTensorNhwcToNchw<float>(inputTensorInfo, inputData);
74 PermuteTensorNhwcToNchw<float>(outputTensorInfo, expectedOutputData);
78 INetworkPtr net = CreateInstanceNormalizationNetwork<DataType::Float32>(inputTensorInfo.
GetShape(),
85 BOOST_TEST_CHECKPOINT(
"Create a network");
87 std::map<int, std::vector<float>> inputTensorData = { { 0, inputData } };
88 std::map<int, std::vector<float>> expectedOutputTensorData = { { 0, expectedOutputData } };
90 EndToEndLayerTestImpl<DataType::Float32, DataType::Float32>(move(net),
92 expectedOutputTensorData,
100 using namespace armnn;
102 const float eps = 0.0001f;
103 const float beta = 0.0f;
104 const float gamma = 1.0f;
112 std::vector<float> inputData = std::vector<float>(
135 std::vector<float> expectedOutputData = std::vector<float>(
147 0.99995005f, -0.7337929f,
149 -0.99995005f, 0.52413774f,
152 -0.99995005f, -1.1531031f,
154 0.99995005f, 1.3627582f
157 InstanceNormalizationEndToEnd(defaultBackends,
170 using namespace armnn;
172 const float eps = 0.0001f;
173 const float beta = 0.0f;
174 const float gamma = 1.0f;
182 std::vector<float> inputData = std::vector<float>(
205 std::vector<float> expectedOutputData = std::vector<float>(
217 0.99995005f, -0.7337929f,
219 -0.99995005f, 0.52413774f,
222 -0.99995005f, -1.1531031f,
224 0.99995005f, 1.3627582f
228 InstanceNormalizationEndToEnd(defaultBackends,
241 using namespace armnn;
243 const float eps = 0.0001f;
244 const float beta = 10.0f;
245 const float gamma = 2.0f;
253 std::vector<float> inputData = std::vector<float>(
276 std::vector<float> expectedOutputData = std::vector<float>(
299 InstanceNormalizationEndToEnd(defaultBackends,
312 using namespace armnn;
314 const float eps = 0.0001f;
315 const float beta = 10.0f;
316 const float gamma = 2.0f;
324 std::vector<float> inputData = std::vector<float>(
347 std::vector<float> expectedOutputData = std::vector<float>(
370 InstanceNormalizationEndToEnd(defaultBackends,
float m_Gamma
Gamma, the scale scalar value applied for the normalized tensor. Defaults to 1.0. ...
void InstanceNormalizationNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
float m_Beta
Beta, the offset scalar value applied for the normalized tensor. Defaults to 1.0. ...
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
static INetworkPtr Create()
An InstanceNormalizationDescriptor for InstanceNormalizationLayer.
void InstanceNormalizationNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
float m_Eps
Epsilon, small scalar value added to variance to avoid dividing by zero. Defaults to 1e-12f...
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.
void InstanceNormalizationNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
const TensorShape & GetShape() const
std::vector< armnn::BackendId > defaultBackends
void InstanceNormalizationNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)