Browse Source

load LRN bias from param

tags/20180314
nihui 8 years ago
parent
commit
0fd701112e
3 changed files with 8 additions and 6 deletions
  1. +4
    -4
      src/layer/arm/lrn_arm.cpp
  2. +3
    -2
      src/layer/lrn.cpp
  3. +1
    -0
      src/layer/lrn.h

+ 4
- 4
src/layer/arm/lrn_arm.cpp View File

@@ -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;


+ 3
- 2
src/layer/lrn.cpp View File

@@ -31,6 +31,7 @@ int LRN::load_param(const ParamDict& pd)
local_size = pd.get(1, 5);
alpha = pd.get(2, 1.f);
beta = pd.get(3, 0.75f);
bias = pd.get(4, 1.f);

return 0;
}
@@ -90,7 +91,7 @@ int LRN::forward_inplace(Mat& bottom_top_blob) const
float* ptr = bottom_top_blob.channel(q);
for (int i=0; i<size; i++)
{
ptr[i] = ptr[i] * pow(1.f + alpha_div_size * ssptr[i], -beta);
ptr[i] = ptr[i] * pow(bias + alpha_div_size * ssptr[i], -beta);
}
}
}
@@ -154,7 +155,7 @@ int LRN::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;


+ 1
- 0
src/layer/lrn.h View File

@@ -36,6 +36,7 @@ public:
int local_size;
float alpha;
float beta;
float bias;
};

} // namespace ncnn


Loading…
Cancel
Save