首先, 来看一下原文中关于 VGG 网络的结构设置, 如下图所示:
可以看到, 上图中, 不同版本的 VGG 网络的整体结构差不多, 主要的不同体现在每一个卷积段内(共5个卷积段)卷积层的个数以及卷积层的参数, 下面我们以 VGG-19 为例, 给出 VGG 网络的 PyTorch 实现, 其他版本的 VGG 网络可以用同样方式进行定义.
1 |
|
上面的定义方式比较直观, 但是不够简洁, 由于 VGGNet 的结构设计比较有规律, 因此我们可以用下面的代码使模型定义变的更加整洁:
1 | # vgg16, 可以看到, 带有参数的刚好为16个 |
通过此方式定以后, 模型的 forward
部分非常简洁, 也很易于理解.