先总结:
残差块允许相对于恒等函数f(x)=x的参数化。
•添加残差块可以通过有效的方式增加功能复杂性。
•我们可以通过让残差块通过跨层数据通道来训练有效的深层神经网络。
•resnet对以后的深层神经网络的设计产生了重大影响,无论是卷积性质还是序列性质。
跑的结果:
training on cpu
epoch 1, loss 0.0030, train acc 0.791, test acc 0.839, time 11532.3 sec
epoch 2, loss 0.0011, train acc 0.892, test acc 0.872, time 10040.7 sec
epoch 3, loss 0.0009, train acc 0.915, test acc 0.842, time 7879.8 sec
epoch 4, loss 0.0007, train acc 0.932, test acc 0.884, time 6860.5 sec
epoch 5, loss 0.0006, train acc 0.945, test acc 0.897, time 6763.6 sec
实现后的“残差网络”:
Sequential(
(0): Sequential(
(0): Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3))
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): MaxUnpool2d(kernel_size=(3, 3), stride=(2,