
本文为365天深度学习训练营中的学习记录博客原作者K同学啊一、前期准备1. 模块导入与GPU设置2. 导入数据3. 划分数据集二、ResNet34模型1. 调用模型2. 查看模型详情3.手动搭建ResNet34三、训练模型1. 编写训练函数2. 编写测试函数4. 正式训练四、结果可视化1. Loss与Accuracy图2. 模型评估四、学习心得ResNet 的核心是残差连接。残差块的输出是 ReLU(F(x) x)卷积层只需要学习输入和输出之间的差值梯度还能顺着捷径直接传回前面的层所以网络加深后不容易退化。读懂官方代码的结构输出就能手动搭出 ResNet34。整体结构是7×7 卷积 最大池化然后 4 个 stage 分别堆叠 3、4、6、3 个 BasicBlock最后接全局平均池化和全连接层一共 1 16×2 1 34 层。搭建时有三个要点layer 2~4 的第一个块会把尺寸减半、通道翻倍这时捷径上要加 1×1 卷积 BN也就是 downsample来对齐形状卷积后面紧跟 BN所以卷积层不需要 bias用 _make_layer 按个数堆叠 BasicBlock代码会简洁很多。搭好后打印出的结构和官方完全对应。迁移学习效果很明显。调用官方 ResNet34 并加载 ImageNet 预训练权重只要把最后的 fc 换成 2 类输出。第 1 轮测试准确率就到了 97.4%20 轮后最佳测试准确率是 98.8%。ResNet34 比 VGG-16 更深参数却少得多。它的层数是 VGG-16 的两倍多参数量只有 2129 万而上周的 VGG-16 约 1.34 亿。主要原因是 ResNet 用全局平均池化代替了 VGG 那几个巨大的全连接层。