现代卷积神经网络(8)-VGG
使用块的网络(VGG)
经典卷积神经网络的基本组成部分是下面的这个序列:
- 带填充以保持分辨率的卷积层;
- 非线性激活函数,如ReLU;
- 汇聚层,如最大汇聚层。
虽然AlexNet证明深层神经网络卓有成效,但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。使用块的想法首先出现在牛津大学的视觉几何组(visual geometry group)的VGG网络中。通过使用循环和子程序,可以很容易地在任何现代深度学习框架的代码中实现这些重复的架构。
导入库,定义VGG块
1 | import torch |
定义VGG网络

原始VGG网络有5个卷积块,其中前两个块各有一个卷积层,后三个块各包含两个卷积层。 第一个模块有64个输出通道,每个后续模块将输出通道数量翻倍,直到该数字达到512。由于该网络使用8个卷积层和3个全连接层,因此它通常被称为VGG-11。
1 | conv_arch = ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512)) |
载入数据集,图像预处理
1 | def load_data_fashion_mnist(batch_size, resize=None): #@save |
定义正确率计算:
1 | class Accumulator: #@save |
图像绘制
1 | class Animator: #@save |
计时函数
1 | class Timer: #@save |
训练模型函数
1 | #@save |
评估模型
由于VGG-11比AlexNet计算量更大,因此我们构建了一个通道数较少的网络,足够用于训练Fashion-MNIST数据集。
1 | ratio = 4 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HUI!
评论
ValineDisqus





