mindspore.ops.lrn

mindspore.ops.lrn(x, depth_radius=5, bias=1.0, alpha=1.0, beta=0.5, norm_region='ACROSS_CHANNELS')[源代码]

局部响应归一化操作LRN(Local Response Normalization)。

警告

lrn在Ascend平台已废弃,存在潜在精度问题。建议使用其他归一化方法,如 mindspore.ops.batch_norm 代替LRN。

\[b_{c} = a_{c}\left(k + \frac{\alpha}{n} \sum_{c'=\max(0, c-n/2)}^{\min(N-1,c+n/2)}a_{c'}^2\right)^{-\beta}\]

其中 \(a_{c}\) 表示特征图中 \(c\) 对应的具体像素值; \(n/2\) 为参数 depth_radius\(k\) 为参数 bias\(\alpha\) 为参数 alpha\(\beta\) 为参数 beta

参数:
  • x (Tensor) - 数据类型为float16或float32的四维Tensor。

  • depth_radius (int) - 一维归一化窗口的半宽。默认值: 5

  • bias (float) - 偏移量(通常为正以避免除零问题)。默认值: 1.0

  • alpha (float) - 比例系数,通常为正。默认值: 1.0

  • beta (float) - 指数。默认值: 0.5

  • norm_region (str) - 指定归一化区域。可选值: "ACROSS_CHANNELS" 。默认值: "ACROSS_CHANNELS"

返回:

Tensor,与 x 的shape和数据类型相同。

异常:
  • TypeError - depth_radius 不是int类型。

  • TypeError - biasalphabeta 不是float类型。

  • TypeError - norm_region 不是str。

  • TypeError - x 不是Tensor。

支持平台:

GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> input_x = Tensor(np.array([[[[0.1], [0.2]],
...                       [[0.3], [0.4]]]]), mindspore.float32)
>>> output = ops.lrn(input_x)
>>> print(output)
[[[[0.09534626]
   [0.1825742 ]]
  [[0.2860388 ]
   [0.3651484 ]]]]