上次课介绍了LeNet-5和AlexNet,本节课介绍VGG和GoogleNet。
牛津大学以自身实验室的命名定义了VGG神经网络。VGG根据层数的不同包括有VGG-11、VGG-16、VGG-19等。
VGG上比较大的创新有发现采用类似3*3小窗口的kernel不仅对比AlexNet的7*7窗口具有更小的计算量,且学习效果更佳。
VGG的发现在ILSVRC比赛上拿到了第二名的成绩。
在了解第一名前,这里先讲解1*1size的kernel是什么原理。
Kernel的size取1*1,在进行1*1的卷积输出后,图片大小保持不变,但channel(通道数)发生改变(使用多少个kernel即会有多少个通道)。这样会使计算量降低。
当时获得比赛第一名的是有谷歌公司开发的GoogleNet。GoogleNet比起19层的VGG多了3层,达到了22层结构。GoogleNet除具有更好的性能外,还发现对同一层可以采用不同的卷积核。
为与最后3*3 max pooling输出结果统一,取stride=2和padding操作。将各个不同kernel卷积输出的结果汇总为[42,4,7,7]。这样做的原因在于可以使网络结构可以在不同的视野下进行学习。
Googlenet结构如下
在中间节点处做了不同的kernel卷积运算。
由以上这些模型结构可注意到,随着研究的深入,模型层数也在一直的增加。那么是否模型层数越大,模型越好?
有人研究过层数与模型正确率的关系
上图左侧,同样的CIFAR-10数据集,有人研究过20层、32层、44层、56层的错误率表现。由图可看出更多的层数反而不会使准确率提升,更使得训练过程愈发困难。
本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!