本文的模型是三层卷积,大家有需要拿去参考。
模型部分代码如下:
class CNN(nn.Module):
def __init__(self,l2_weight_decay=1e-4):
super(CNN, self).__init__()
self.net = nn.Sequential(
nn.Conv2d(3, 16, kernel_size=7, padding=3), nn.BatchNorm2d(16), nn.ReLU(),
nn.MaxPool2d(kernel_size=3,padding=1, stride=1),
nn.Conv2d(16, 32, kernel_size=7, padding=3), nn.BatchNorm2d(32), nn.ReLU(),
nn.MaxPool2d(kernel_size=3, stride=1,padding=1),
nn.Conv2d(32, 64, kernel_size=7, padding=3), nn.BatchNorm2d(64), nn.ReLU(),
nn.MaxPool2d(kernel_size=3, padding=1,stride=1),
nn.Flatten(),
nn.Linear(32 * 64 * 64, 1024), nn.ReLU(), nn.Dropout(0.5),
nn.Linear(1024, 5)
)
# L2 正则化
self.l2_weight_decay = l2_weight_decay
def forward(self, x):
return self.net(x)
# 创建网络实例
net = CNN()
在这段代码中,加入了批归一化层加速模型收敛、L2正则化和Dropout来防止过拟合。