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网络,为什么书本作者选择了使得通道数越来越多的策略:
区分:通道数递增:增加网络的特征识别能力,可以提取更多的更丰富的特征,增加模型精确度
通道数递减:防止过拟合,加快运算
两种策略都可,根据实际选择。
问题2:vgg每一块最后的汇聚层都使得图片尺寸缩小(注:汇聚层不会改变通道数目),为什么:因为卷积做的就是提炼特征,汇聚层做的是特征精

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

被折叠的 条评论
为什么被折叠?



