TensorFlow10.4 卷积神经网络-batchnorm

发布时间 2023-06-24 15:28:08作者: 哎呦哎(iui)

我们发现这个sigmoid函数在小于-4或者大于4的时候他的导数趋近于0。然后我们送进去的input的值在[-100,100]之间,这样很容易引起梯度弥散的现象。所以我们一般情况下使用ReLU函数,但是我们有时候又不得不使用sigmoid函数。这个时候我们在送到下一层的时候我们应该先经过Normalization操作。使得这个input变成N(0,\(z^2\))就是他的的input变成以0为均值,然后以z为方差的一个输入。就是使得这个input均匀的散布到0附近,然后再一个很小的范围变动。
image

我们发现这个\(x_1\)在很小的范围内进行变动的时候这loss变化很缓慢,但是这个\(x_2\)在一个很大的范围内进行变动的时候loss会急剧的变化。就像是第二张图一样,我们\(x_1\),\(x_2\)的范围一样,所以我们这个loss就像是一个圆一样。从哪个方向都一样。
这就是一个Feature scaling的概念。

  • image Normalization
    image

  • Batch Normalization
    dynamic mean/std

Batch Norm

image

image
这就是一个标准的batch Bormalization
image

layer.BatchNormalization

net = layers.BatchNormalization()

  • axis=-1,
  • center=True,
  • scale=True
  • trainable=True

net(x, training=None)

上面是是否使用\(\alpha\)\(\beat\)

实战:
image
image
就是把一些N(10,10)=>N(0,1)(就是在0附近)
image

好处:
image