现代卷积神经网络

本文深入探讨卷积神经网络(CNN)的汇聚层作用,包括平均汇聚层与最大汇聚层的选择。文章指出,CNN通常结合卷积层与汇聚层,以增加网络深度和性能。此外,介绍了VGG块的结构与通道数增减策略,nin网络的结构特征提取优势,Inception模块的多路线特征提取,以及批量规范化层在稳定模型训练中的作用。
摘要由CSDN通过智能技术生成

1.为什么使用汇聚层:用来减小网络输出大小,同时进行相应的特征提取

1-1:平均汇聚层和最大汇聚层:平均用于对更加细化的特征进行提取检测,最大用于对突出特征进行提取检测。平均:图像分割(需要细致描形),场景分类(一个场景由大量细小特征构成):细,广。最大:识别场景中的物体(具有突出特征),图像分类(特征较少,且鲜明):特征少而突出

1-2:为什么不在做卷积层的时候把输出做少从而不使用汇聚层:1.汇聚层相当于对细化程度更高的特征图进行浓缩,而不是直接减少特征图细化程度2.还可以有效增大感应视野(层数越多,感应视野越大)

2.一般都是一个卷积加激活再加一个汇聚,也有例外:

 nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),
    nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),
    nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(),
    nn.MaxPool2d(kernel_size=3, stride=2),

三层卷积才加汇聚,保持了网络输入输出通道,图形尺寸一致,又增加了网络深度,提高了性能。

3.可以循环生成自定义输出通道以及可指定层数的卷积块——vgg:可以用于轻松构建更复杂的网络。

def vgg_block(num_convs, in_channels, out_channels):
    layers = []
    for _ in range(num_convs):
        layers.append(nn.Conv2d(in_channels, out_channels,
                                kernel_size=3, padding=1))
        layers.append(nn.ReLU())
        in_channels = out_channels
    layers.append(nn.MaxPool2d(kernel_size=2,stride=2))
    return nn.Sequential(*layers)

参数1,指定卷积层数目,参数二指定输入层数目,参数三指定输出层数目。

块的特定:一:kernel_size=3, padding=1,使得输入输出图片尺寸不变,使得输出结果具有规律性。

二:in_channels = out_channels,确保每两个卷积层之间可以衔接。

三:layers.append(nn.MaxPool2d(kernel_size=2,stride=2)),使得每次块的输出结果图片尺寸为原来的一半。

解释:问题1:这里作者在之后选择了

conv_arch = ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512))这样一组参数构造了想要的含有五个vgg块的vgg网络,为什么书本作者选择了使得通道数越来越多的策略:

区分:通道数递增:增加网络的特征识别能力,可以提取更多的更丰富的特征,增加模型精确度

通道数递减:防止过拟合,加快运算

两种策略都可&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值