tf.nn.lrn
Args:
input: A
Tensor
. Must be one of the following types:float32
,half
. 4-D.
input是一个4D的tensor,类型必须为float。
depth_radius: An optional
int
. Defaults to5
.0-D. Half-width of the 1-D normalization window.
一个类型为int的标量,表示囊括的kernel的范围。详情见下面解释
bias: An optional
float
. Defaults to1
.An offset (usually positive to avoid dividing by 0).
偏置,没什么好解释的
alpha: An optional
float
. Defaults to1
.A scale factor, usually positive.
乘积系数,是在计算完囊括范围内的kernel的激活值之和之后再对其进行乘积
beta: An optional
float
. Defaults to0.5
. An exponent.
指数系数。
name: A name for the operation (optional).
Returns: A Tensor
. Has the same type as input
.
LRN是normalization的一种,normalizaiton的目的是抑制,抑制神经元的输出。而LRN的设计借鉴了神经生物学中的一个概念,叫做“侧抑制”。
侧抑制: 相近的神经元彼此之间发生的抑制作用,即在某个神经元受到刺激而产生兴奋时,再刺激相近的神经元,则后者所发生的兴奋对前者产生的抑制作用。也就是说,侧抑制是指相邻的感受器之间能够互相抑制的现象。
LRN对局部神经元的活动创建竞争机制,使得响应比较大的值相对更大,比较小的值就会更小。提高了模型的泛化能力。下面展示公式:
上述公式中 N 表示kernel的数量,
从公式和历史由来可以看出,LRN是对channel做计算的。
还有一个tf.nn.local\_response\_normalization()
,这个api会指向tf.nn.lrn()
。
举例:
这个就没什么好举例子的。
争议:
2015年 Very Deep Convolutional Networks for Large-Scale Image Recognition.这篇文章提到LRN基本没什么用,反而还增加了计算时间。