详见李沐视频 与 同济子豪兄论文VGG的讲解
代码大致结构是看李沐大神的视频,由于使用d2l库中的函数老是报错(可能是我安装的版本有问题),于是将代码进行修改,但是功能一样
import torch
import torch.nn as nn
from d2l import torch as d2l
import torchvision
import torchvision.transforms as transforms
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
def vgg_block(num_conv,in_channels,out_channels):
'''
:param num_conv: block中conv层的个数
:param in_channels: 输入的通道数
:param out_channels: 输出的通道数
:return: 返回一个nn.Sequential包括的block
'''
layers=[]
for _ in range(num_conv):
layers.append(nn.Conv2d(in_channels=in_channels,
out_channels=out_channels,
kernel_size=3,
padding=1))
layers.append(nn.ReLU(True))
in_channels=out_channels
layers.append(nn.MaxPool2d(kernel_size=2,stride=2))
return nn.Sequential(*layers)