4 含并行连结的网络(GoogLeNet)
- GoogLeNet吸收了NiN中串联网络的思想,解决了什么样大小的卷积核最合适的问题。有时使用不同大小的卷积核组合是有利的。
4.1 Inception块
- 在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。这很可能得名于电影《盗梦空间》(Inception),因为电影中的一句话“我们需要走得更深”(“We need to go deeper”)。
- Inception块由四条并行路径组成。前三条路径使用窗口大小为1 × 1、3 × 3和5 × 5的卷积层,从不同空间大小中提取信息。
1 | import torch |
- GoogLeNet可以用各种滤波器尺寸探索图像,这意味着不同大小的滤波器可以有效地识别不同范围的图像细节。
4.2 GoogLeNet模型
- GoogLeNet使用9个Inception块和全局平均汇聚层的堆叠来生成其估计值。Inception块之间的最大汇聚层可降低维度。
- 第一个模块类似于AlexNet和LeNet,Inception块的组合从VGG继承,全局平均汇聚层避免了在最后使用全连接层。
- GoogLeNet架构:
1 | # 1. 第一个模块使用64个通道、7 × 7卷积层。 |
- 查看形状
1 | X = torch.rand(size=(1,1,96,96)) |
Sequential output shape: torch.Size([1, 64, 24, 24])
Sequential output shape: torch.Size([1, 192, 12, 12])
Sequential output shape: torch.Size([1, 480, 6, 6])
Sequential output shape: torch.Size([1, 832, 3, 3])
Sequential output shape: torch.Size([1, 1024])
Linear output shape: torch.Size([1, 10])
4.3 训练模型
- 训练之前,我们将图片转换为96x96大小,然后进行训练。
1 | import os |
loss 0.248, train acc 0.906, test acc 0.894
21.5 examples/sec on cpu