import numpy as np
import torch
from torch import nn
from torch.autograd import Variable
定义VGG的block
VGG几乎全部使用3x3的卷积核,以及2x2的池化层,使用小的卷积核进行多层堆叠和一个大的卷积核感受野是相同的,同时VGG小的卷积核还能减少参数,具有更深的结构。
def vgg_block(num_convs, in_channels, out_channels):
# 定义第一层,并转化为 List
net = [nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1),nn.ReLU(True)]
# 通过循环定义其他层
for i in range(num_convs - 1):
# List每次只能添加一个元素
# 输入和输出channel均为out_channels
net.append(nn.Conv2d(out_channels, out_channels, kernel_size=3,padding=1))
net.append(nn.ReLU(True))
# 定义池化层
net.append(nn