VGG特点:
1.深度:非常深
2.卷积核采用3*3,使得网络能够捕捉到更细粒度的图像特征
3.全连接层:使用全连接层来分类
4.使用ReLU激活函数,有助于缓解梯度消失
5.在卷积层和池化层后,使用局部归一化,有助于提高网络训练速度和性能
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)
问题:
关于代码里面的num_convs怎么选择vgg块的配置
根据任务的复杂性:
- 更复杂的任务(例如,具有大量类别的图像分类)可能需要更深的网络来捕获更抽象的特征,因此可能选择VGG16或VGG19。
数据集大小:大的选大的,小的选小的(比如vgg11或13)
训练资源,训练时间,泛化能力,网络越深,参数越多,会提高泛化能力,也增加了过拟合风险