|
|
|
@@ -130,7 +130,7 @@ int LRN_arm::forward_inplace(Mat& bottom_top_blob) const |
|
|
|
#endif // __ARM_NEON |
|
|
|
|
|
|
|
#if __ARM_NEON |
|
|
|
float32x4_t _v1 = vdupq_n_f32(1.f); |
|
|
|
float32x4_t _bias = vdupq_n_f32(bias); |
|
|
|
float32x4_t _ads = vdupq_n_f32(alpha_div_size); |
|
|
|
float32x4_t _mb = vdupq_n_f32(-beta); |
|
|
|
for (; nn>0; nn--) |
|
|
|
@@ -138,7 +138,7 @@ int LRN_arm::forward_inplace(Mat& bottom_top_blob) const |
|
|
|
float32x4_t _p = vld1q_f32(ptr); |
|
|
|
float32x4_t _ssp = vld1q_f32(ssptr); |
|
|
|
_ssp = vmulq_f32(_ssp, _ads); |
|
|
|
_ssp = vaddq_f32(_ssp, _v1); |
|
|
|
_ssp = vaddq_f32(_ssp, _bias); |
|
|
|
_ssp = pow_ps(_ssp, _mb); |
|
|
|
_p = vmulq_f32(_p, _ssp); |
|
|
|
vst1q_f32(ptr, _p); |
|
|
|
@@ -149,7 +149,7 @@ int LRN_arm::forward_inplace(Mat& bottom_top_blob) const |
|
|
|
#endif // __ARM_NEON |
|
|
|
for (; remain>0; remain--) |
|
|
|
{ |
|
|
|
*ptr = *ptr * pow(1.f + alpha_div_size * *ssptr, -beta); |
|
|
|
*ptr = *ptr * pow(bias + alpha_div_size * *ssptr, -beta); |
|
|
|
|
|
|
|
ssptr++; |
|
|
|
ptr++; |
|
|
|
@@ -216,7 +216,7 @@ int LRN_arm::forward_inplace(Mat& bottom_top_blob) const |
|
|
|
ss += val; |
|
|
|
} |
|
|
|
|
|
|
|
ptr[j] = ptr[j] * pow(1.f + alpha_div_size * ss, -beta); |
|
|
|
ptr[j] = ptr[j] * pow(bias + alpha_div_size * ss, -beta); |
|
|
|
} |
|
|
|
|
|
|
|
ptr += outw; |
|
|
|
|