深度学习笔记2--VGG-Net

Alexnet从头训练cfar10和mnist数据集,代码连接(并非加载权重)


1.VGG论文中文翻译地址:

http://noahsnail.com/2017/08/17/2017-8-17-VGG%E8%AE%BA%E6%96%87%E7%BF%BB%E8%AF%91%E2%80%94%E2%80%94%E4%B8%AD%E6%96%87%E7%89%88/

    论文中提出大量的用3*3的卷积核替代原来的5*5或者7*7的卷积核,原因如下:多个3*3的卷积核比一个大的卷积核多几个非线性;3*3卷积核是最小的能够捕获上下左右中心点信息的核;两个3*3的核比一个5*5核有更少的参数,7*7一样。


2.VGG16/19都是多层卷积后加一层最大池化,本质上结构与Alexnet相似,5次卷积,3次全连接。不同点就在于Alexnet是每层卷积一次池化,而VGG则是多层卷积一次池化,并且池化一次,深度*2。


3.网络具体参数设置如下(原论文)

    ConvNet训练过程通常遵循Krizhevsky等人(2012)(除了从多尺度训练图像中对输入裁剪图像进行采样外,如下文所述)。也就是说,通过使用具有动量的小批量梯度下降(基于反向传播(LeCun等人,1989))优化多项式逻辑回归目标函数来进行训练。批量大小设为256,动量为0.9。训练通过权重衰减(L2惩罚乘子设定为5104)进行正则化,前两个全连接层执行丢弃正则化(丢弃率设定为0.5)。学习率初始设定为10

10−2,然后当验证集准确率停止改善时,减少10倍。学习率总共降低3次,学习在37万次迭代后停止(74个epochs)。我们推测,尽管与(Krizhevsky等,2012)相比我们的网络参数更多,网络的深度更大,但网络需要更小的epoch就可以收敛,这是由于(a)由更大的深度和更小的卷积滤波器尺寸引起的隐式正则化,(b)某些层的预初始化

    网络权重的初始化是重要的,因为由于深度网络中梯度的不稳定,不好的初始化可能会阻碍学习。为了规避这个问题,我们开始训练配置A(表1),足够浅以随机初始化进行训练。然后,当训练更深的架构时,我们用网络A的层初始化前四个卷积层和最后三个全连接层(中间层被随机初始化)。我们没有减少预初始化层的学习率,允许他们在学习过程中改变。对于随机初始化(如果应用),我们从均值为0和方差为10210−2的正态分布中采样权重。偏置初始化为零。值得注意的是,在提交论文之后,我们发现可以通过使用Glorot&Bengio(2010)的随机初始化程序来初始化权重而不进行预训练。


4.训练细节

    采用多GPU并行计算,单batch分在多个GPU上进行并行运算,以加快计算速度。

    加快计算速度新方案:在网络不同层之间采用模型和数据并行(此处并未理解),论文中提到效果很好。


5.TensorFlow下VGG16权重加载

输出权重的键得到的结果,可以看到每个卷积与全连接都有训练好的权重。每个权重里面包含w值与b值,我输出了conv5_1的w为3,3,512,512大小矩阵,b为512大小。

dict_keys(['conv5_1', 'fc6', 'conv5_3', 'conv5_2', 'fc8', 'fc7', 'conv4_1', 'conv4_2', 'conv4_3', 'conv3_3', 'conv3_2', 'conv3_1', 'conv1_1', 'conv1_2', 'conv2_2', 'conv2_1'])


6.权重下载

VGG16权重百度网盘可搜到.npy文件,密码umce,540M左右,VGG19权重谷歌云搜到了链接,但是尝试多次未下载成功,此处放VGG19权重链接,如果需要可以自行下载,权重加载方式同VGG16.


7.测试文件中有3张图片,2.jpg测试结果显示top1 为lab coat,出现错误,可能原因是我图片大小不对,未去探究。


复现连接

你可能感兴趣的:(深度学习)