VGGNet实现细节
https://docs.python.org/zh-cn/3/tutorial/index.html
1 训练
损失函数:多项式逻辑回归(multinomial logistic regression)
优化方法:带动量的小批量梯度下降,即动量梯度下降法,momentum=0.9
batch_size=256
正则化:
①权重衰减(L2,惩罚系数510^-4)
②Dropout,前两个全连接层,rate=0.5
学习率:
初始为10^-2,当验证集上准确率不再提高时,缩小10倍,共缩小3次,总共进行了370K次迭代(74epochs),每个epoch含有5000个bach,所以训练集数量为5000256=128w,即ImageNet训练集规模。
训练时采用了预初始化策略,先训练了层数较少的模型A,11层,训练更深的模型时,使用A的权重参数初始化对应的前四层卷积和最后的三个全连接层,对中间没有初始化的层,初始化为均值0,方差10^-2,另外,文中提到,使用’glorot_uniform’这种初始化方式,可以不使用预初始化策略。
数据增强:
①水平翻转②随机RGB颜色变换,random RGB colour shift(AlexNet的方法)③尺度缩放后(rescale),再裁剪为224224
尺度缩放方法:
训练时,两种,
1 固定尺度S,保持长宽比不变,将图像短边缩放为S,S常取256,缩放后再裁剪224224窗口,用于训练。
2 随机缩放S=[min, miax],同样保持长宽比不变,在[min, miax]中随机取一数作为S,[min, miax]通常为[256, 512],再按照方法1处理
2 测试
首先改变网络结构
将第一个FC转为77的卷积,后两个FC转为11卷积,卷积核个数分别等于原来全连接层的神经元数,之后做全局平均池化,得到111000的输出,再接softmax
测试图像的得分为本身得分与翻转图像得分的平均。
采用多尺度平均