卷积神经网络之(使用重复元素的网络)VGG

卷积神经网络之VGG

VGG提出了可以通过重复使用简单的基础块来构建深度模型的思路。

VGG模型

VGG块的组成规律是:

  • 连续使用数个相同的填充为1,、窗口形状为3*3的卷积层
  • 后接一个步幅为2、窗口形状为2*2的最大赤化层

卷积层保持输入的宽和高不变,而池化层对其减半。

VGG根据网络层数不一有不同的版本,其中VGG-11是由8个卷积层+3个全连接层组成。

下图展示了VGG-11、VGG-13、VGG-16、VGG-19的网络结构与具体参数。

代码

vgg_block函数来实现这个基础的VGG块,它可以指定卷积层的数量num_convs和输出通道数num_channels

import d2lzh as d2l
from mxnet import gluon, init, nd
from mxnet.gluon import nn

def vgg_block(num_convs, num_channels):
    blk = nn.Sequential()
    for _ in range(num_convs):
        blk.add(nn.Conv2D(num_channels, kernel_size=3,
                          padding=1, activation='relu'))
    blk.add(nn.MaxPool2D(pool_size=2, strides=2))
    return blk

VGG-11网络:

conv_arch = ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512))
def vgg(conv_arch):
    net = nn.Sequential()
    # 卷积层部分
    for (num_convs, num_channels) in conv_arch:
        net.add(vgg_block(num_convs, num_channels))
    # 全连接层部分
    net.add(nn.Dense(4096, activation='relu'), nn.Dropout(0.5),
            nn.Dense(4096, activation='relu'), nn.Dropout(0.5),
            nn.Dense(10))
    return net

net = vgg(conv_arch)

总结:

  • 使用连续的的多个小卷积核(3×3),来代替一个大的卷积核(例如(5×5)。
  • 使用小的卷积核的其感受野必然变小。所以,VGG中就使用连续的3×3卷积核,来增大感受野。
  • VGG认为2个连续的3×3卷积核能够替代一个5×5卷积核,三个连续的3×3能够代替一个7×7。
  • 通道数更多,特征度更宽,更多的通道数表示更丰富的图像特征。
  • VGG-11通过5个可以重复使用的卷积块来构造网络
  • 根据卷积层个数和输出通道数的不同可以定义出不同的VGG模型

代码参考自:<<动手学深度学习>>

其他经典网络结构:

卷积神经网络之 LeNet卷积神经网络之(稠密连接网络)DenseNet

卷积神经网络之(深度卷积神经网络)AlexNet

卷积神经网络之(使用重复元素的网络)VGG

卷积神经网络之残差网络ResNet详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值