MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / init_lut

Function init_lut

src/cpu/kernels/CpuActivationKernel.cpp:133–199  ·  view source on GitHub ↗

TODO (COMPMID-7511): delegate to LUTManager

Source from the content-addressed store, hash-verified

131#ifdef __aarch64__
132// TODO (COMPMID-7511): delegate to LUTManager
133void init_lut(ActivationLayerInfo::ActivationFunction act_func,
134 DataType data_type,
135 const UniformQuantizationInfo &qi_in,
136 const UniformQuantizationInfo &qi_out,
137 ActivationLayerInfo::LookupTable256 &lut,
138 float a,
139 float b)
140{
141 for (size_t i = 0; i < lut.size(); ++i)
142 {
143 float tmp_f =
144 (data_type == DataType::QASYMM8) ? dequantize_qasymm8(i, qi_in) : dequantize_qasymm8_signed(i, qi_in);
145 switch (act_func)
146 {
147 case ActivationLayerInfo::ActivationFunction::HARD_SWISH:
148 tmp_f = tmp_f * ((std::min(std::max((tmp_f + 3), 0.0f), 6.0f)) * 0.166666667f);
149 break;
150 case ActivationLayerInfo::ActivationFunction::LEAKY_RELU:
151 tmp_f = tmp_f > 0 ? tmp_f : tmp_f * a;
152 break;
153 case ActivationLayerInfo::ActivationFunction::LOGISTIC:
154 tmp_f = 1.f / (1.f + std::exp(-tmp_f));
155 break;
156 case ActivationLayerInfo::ActivationFunction::ABS:
157 tmp_f = std::abs(tmp_f);
158 break;
159 case ActivationLayerInfo::ActivationFunction::LINEAR:
160 tmp_f = a * tmp_f + b;
161 break;
162 case ActivationLayerInfo::ActivationFunction::BOUNDED_RELU:
163 tmp_f = std::min<>(a, std::max(0.f, tmp_f));
164 break;
165 case ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU:
166 tmp_f = std::min<>(a, std::max<>(b, tmp_f));
167 break;
168 case ActivationLayerInfo::ActivationFunction::SOFT_RELU:
169 tmp_f = (tmp_f > 12.f) ? tmp_f : std::log(1.f + std::exp(tmp_f));
170 break;
171 case ActivationLayerInfo::ActivationFunction::ELU:
172 tmp_f = (tmp_f >= 0) ? tmp_f : a * (std::exp(tmp_f) - 1);
173 break;
174 case ActivationLayerInfo::ActivationFunction::SQRT:
175 tmp_f = std::sqrt(tmp_f);
176 break;
177 case ActivationLayerInfo::ActivationFunction::SQUARE:
178 tmp_f = tmp_f * tmp_f;
179 break;
180 case ActivationLayerInfo::ActivationFunction::TANH:
181 tmp_f = a * std::tanh(b * tmp_f);
182 break;
183 case ActivationLayerInfo::ActivationFunction::IDENTITY:
184 break;
185 case ActivationLayerInfo::ActivationFunction::SWISH:
186 tmp_f = tmp_f / (1.f + std::exp(-a * tmp_f));
187 break;
188 case ActivationLayerInfo::ActivationFunction::GELU:
189 tmp_f = tmp_f * (0.5f * (1.0f + erff(tmp_f / 1.41421356237f)));
190 break;

Callers 1

configureMethod · 0.70

Calls 10

expFunction · 0.85
absFunction · 0.85
logFunction · 0.85
sqrtFunction · 0.85
tanhFunction · 0.85
quantize_qasymm8_signedFunction · 0.85
dequantize_qasymm8Function · 0.50
quantize_qasymm8Function · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected