1。)Batchnorm总是用于深度卷积神经网络。但它是否也用于非CNN。在NN。在只有完全连接层的网络中?
2。)是否在浅层CNN中使用了batchnorm?
3.如果我有一个带有输入图像和输入数组IN_array的CNN,则输出是最后一个完全连接层之后的数组。我将此数组称为FC_array。如果我想用IN_array连接FC_array。
CONCAT_array = tf.concat(values=[FC_array, IN_array])
在concat层之后有一个bachnorm是否有用?或者那个batchnorm应该在concat层之前的FC_array之后?
有关信息,IN_array是一个tf.one_hot()向量。
谢谢
答案 0 :(得分:2)
TL; DR :1。是2.是3.否
<小时/> 的 TS; WM 强>:
事实上,他们首先使用DCNN的批量标准化,这使他们能够在前5个ImageNet分类中击败人类表现,但任何存在非线性的网络都可以从批量标准化中受益。包括由完全连接的层组成的网络。训练深度神经网络因为在训练期间每层输入的分布发生变化而变得复杂,因为前一层的参数发生了变化。这通过要求较低的学习速率和仔细的参数初始化来减慢训练,并且使得训练具有饱和非线性的模型变得非常困难。我们将这种现象称为内部协变量偏移,并通过归一化层输入来解决问题。
是的,它也用于浅CNN-s。任何具有多个层的网络都可以从中受益,尽管更深层次的网络会带来更多好处。
首先,单热矢量应该永远不会进行标准化。归一化意味着您减去均值并除以方差,从而创建一个0均值和1方差的数据集。如果对单热矢量执行此操作,则交叉熵损失计算将完全关闭。其次,单独规范化concat层没有意义,因为它不会更改值,只需连接它们。批量标准化是在图层的输入上完成的,因此在concat之后的那个将获得连接值,可以在必要时进行。