lec5 训练神经网络1

来源:互联网 发布:js .target方法 编辑:程序博客网 时间:2024/06/07 10:07

训练网络之前必须知道,训练卷积网络需要一定的数据量。

finetuning

采用预训练的方式,然后用自己的数据训练网络的最后几层。

(可以将卷积层作为提取特征的固定网络,我们只需重新训练分类层就可以了,当然如果有一定的数据量可以训练较多的层)

如下图所示:

clipboard

准备好数据集,网络模型之后可以开始训练网络。下降策略一般采用SGD(随机梯度下降)

训练步骤:

clipboard

激活函数:

可以看下面博客的内容

http://blog.csdn.net/fffupeng/article/details/73251059

数据预处理:

1、机器学习中pca和白化都是常见的预处理方式。但是在图像处理中很少用到,因为协方差矩阵过大。但是在数据集扩充中可以使用pca进行图片颜色的增强(alexnet)。

但是中心化是常常会做的,在alexnet中计算每个像素点的平均值([32,32,3]的数组),然后减去。在vggnet中计算每个通道的平均值(3个数字)。

权重初始化:

可以看下面博客的内容

http://blog.csdn.net/fffupeng/article/details/73251059

论文:understanding the difficulty of training deep feedfroward neuarl networks

总之一句话来说,就是最好保证输入输出同分布。这也是xavier初始化的思想。

Batch Normalization:

希望每个神经元的输出服从高斯分布,方差不为0.

clipboard

clipboard

注意BN在训练和测试时的差别:

训练时计算的是每个batch的方差和标准差,在测试时计算的是整个训练集的均值和标准差。

最后的训练细节可以参考:

http://blog.csdn.net/fffupeng/article/details/73251059