1 问题
深度学习训练过程中,有很多的训练模型,我们组就在思考LeNet模型与之前运用的全连接模型在训练精度损失与验证精度损失上有什么差别?
2 方法
这是LeNet模型的主要代码,对数据进行两成卷积与两次池化之后再建立三成全连接即可。
class MyNet(nn.Module): def __init__(self): super().__init__() self.conv1 = nn.Conv2d( in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=0 ) self.avg_pool_1 = nn.AvgPool2d(2) self.conv2 = nn.Conv2d( in_channels=6, out_channels=16, kernel_size=5, stride=1, padding=0 ) self.avg_pool_2 = nn.AvgPool2d(2) self.fc1 = nn.Linear( in_features=256, out_features=120 ) self.fc2 = nn.Linear( in_features=120, out_features=84 ) self.fc3 = nn.Linear( in_features=84, out_features=10 ) def forward(self, x): x = self.conv1(x) x = self.avg_pool_1(x) x = self.conv2(x) x = self.avg_pool_2(x) x = torch.flatten(x, 1) # ! [B,C,H,W] x = self.fc1(x) x = self.fc2(x) out = self.fc3(x) return out LeNet模型结果如下: 全连接模型结果如下: |
3 结语
对于LeNet模型与全连接模型结果比较分析,我训练了50个周期来相比较,可发现LeNet模型相比于全连接模型训练精度与验证精度上升地更快,且验证损失的下降也更快,说明LeNet模型有着更高的训练效率,能够运用更少的周期达到更高的精度与更少的损失。