@@ -95,14 +95,14 @@ for name in (:max, :mean, :lpnorm)
9595 elseif $ (name == :mean)
9696 m += x[input_kw, input_kh, input_kd, c, batch_idx]
9797 elseif $ (name == :lpnorm)
98- # y = (∑ᵢ xᵢ ^p)^(1 / p), here to calculate ∑ᵢ xᵢ ^p
98+ # y = (∑ᵢ |xᵢ| ^p)^(1 / p), here to calculate ∑ᵢ |xᵢ| ^p
9999 m += abs(x[input_kw, input_kh, input_kd, c, batch_idx])^ p
100100 else
101101 error(" Unimplemented codegen path" )
102102 end
103103 end
104104
105- # for lpnormpool, y = (∑ᵢ xᵢ ^p)^(1 / p)
105+ # for lpnormpool, y = (∑ᵢ |xᵢ| ^p)^(1 / p)
106106 m = $ (name == :lpnorm) ? m^ (T(1 ) / p) : m
107107
108108 y[w, h, d, c, batch_idx] = _alpha * m # + _beta * y[w, h, d, c, batch_idx]
@@ -263,7 +263,7 @@ for name in (:max, :mean, :lpnorm)
263263 # Either does meanpool :(
264264 dx[input_kw, input_kh, input_kd, c, batch_idx] += dy_idx * _alpha
265265 elseif $ (name == :lpnorm)
266- # y = (∑ᵢ xᵢ ^p)^(1 / p), ∂y/∂xᵢ = xᵢ ^(p-1) × y^(1-p)
266+ # y = (∑ᵢ |xᵢ| ^p)^(1 / p), ∂y/∂xᵢ = |xᵢ| ^(p-1) × y^(1-p) × sign(xᵢ )
267267 xv = x[input_kw, input_kh, input_kd, c, batch_idx]
268268 grad = abs(xv)^ (p- 1 ) * y_idx^ (1 - p) * sign(xv)
269269 dx[input_kw, input_kh, input_kd, c, batch_idx] += dy_idx * grad
0 commit comments