14 #include <boost/test/unit_test_log.hpp> 28 constexpr
float defaultTolerance = 1e-6f;
30 switch (activationFunction)
33 case ActivationFunction::Elu:
34 return (dataType == DataType::Float16 ? 0.01f : 0.00001f);
35 case ActivationFunction::HardSwish:
36 return (dataType == DataType::Float16 ? 0.01f : defaultTolerance);
38 return defaultTolerance;
54 using namespace armnn;
64 Connect(input, prelu, inputInfo, 0, 0);
65 Connect(prelu, output, outputInfo, 0, 0);
84 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
85 void ActivationEndToEndImpl(
const std::vector<armnn::BackendId>& backends,
86 const std::vector<float>& floatInputData,
87 const std::vector<float>& floatExpectedOutputData,
92 using namespace armnn;
95 std::vector<T> inputData = armnnUtils::QuantizedVector<T>( floatInputData,
98 std::vector<T> expectedOutputData = armnnUtils::QuantizedVector<T>( floatExpectedOutputData,
102 INetworkPtr net = CreateActivationNetwork(inputInfo, outputInfo, descriptor);
104 std::map<int, std::vector<T>> inputTensorData = { { 0, inputData } };
105 std::map<int, std::vector<T>> expectedOutputTensorData = { { 0, expectedOutputData } };
107 float tolerance = GetActivationTolerance(descriptor.
m_Function, ArmnnType);
109 EndToEndLayerTestImpl<ArmnnType, ArmnnType>(move(net),
111 expectedOutputTensorData,
121 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
122 void EluEndToEndTest(
const std::vector<BackendId>& backends)
124 std::vector<float> floatInputData{ -2.0f, -1.0f, -0.0f, 0.0f,
125 1.0f, 2.0f, 3.0f, 4.0f };
127 std::vector<float> floatExpectedOutputData{ -0.86466471676f, -0.63212055882f, -0.0f, 0.0f,
128 1.0f , 2.0f , 3.0f, 4.0f };
137 ActivationEndToEndImpl<ArmnnType>(backends,
139 floatExpectedOutputData,
150 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
151 void HardSwishEndToEndTest(
const std::vector<BackendId>& backends)
153 std::vector<float> floatInputData{ -2.0f, -1.0f, -0.5f, 0.0f,
154 1.0f, 2.0f, 3.0f, 4.0f };
156 std::vector<float> floatExpectedOutputData{ -0.33333333333f, -0.33333333333f, -0.208333f, 0.0f,
157 0.66666666667f, 1.66666666667f, 3.0f , 4.0f };
166 ActivationEndToEndImpl<ArmnnType>(backends,
168 floatExpectedOutputData,
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Copyright (c) 2020 ARM Limited.
int32_t GetQuantizationOffset() const
float GetQuantizationScale() const
An ActivationDescriptor for the ActivationLayer.
constexpr char const * GetActivationFunctionAsCString(ActivationFunction activation)
void Connect(armnn::IConnectableLayer *from, armnn::IConnectableLayer *to, const armnn::TensorInfo &tensorInfo, unsigned int fromIndex, unsigned int toIndex)
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
static INetworkPtr Create(NetworkOptions networkOptions={})
ActivationFunction m_Function
The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square, Elu).