今天带大家学习resnet网络系列,resnet的发展与思考,任何一篇网络的理解不应该单单局限在一篇或几篇博客上,复制别人的代码,不追根溯源是很难有深度的理解。
所以今天,我整理这篇博客带大家从头到位看resnet为什么有用(理论层面),怎么实现,如何在版本上的迭代(技术层面),pytorch里面关于torchvison.models里面的resnet.py源码已经迭代过几次version了,所以就在这个层面大家也应该知道,一个网络的实现和优化绝不是博客里面几行代码,当个api小子就能搞定的,确实,静下心来去细品也有收获,也需要时间,所以在这儿帮大家整理。
Talk is cheap,show me the code.来自pytorch官方的resnet.py,代码太长就不给大家贴在这儿了,通过链接去学习。然后这个是借鉴源码改写能够运行的一个例子,作者也值得关注的哦 pytorch-tutorial/main.py at master · yunjey/pytorch-tutorial · GitHub
网上已经有大量关于pytorch_resnet.py源码解读的例子了,我就按我认为合适的顺序给大家整理好参考资料:
Residual block()最简单的理论版实现➡️Basic block()➡️Bottleneck():Bottleneck是BasicBlock的升级版,其功能也是构造子网络,resnet18和resnet34中使用了BasicBlock,而resnet50、resnet101、resnet152使用了Bottlenect构造网络。
Rediual block()里面提到了downsample:
CV脱坑指南(二):ResNet·downsample详解_小德不拿第18个大满贯就不改名的博客-CSDN博客_resnet中的downsample
关于Basicblock与Bottleneck这两个Residual模块的实现与对比:
ResNet残差网络Pytorch实现——BasicBlock残差块_魏宝航-CSDN博客_resnet的basicblock
ResNet残差网络Pytorch实现——Bottleneck残差块_魏宝航-CSDN博客_残差网络bottleneck
Pytorch ResNet代码整体解读:
PyTorch ResNet 使用与源码解析//很详细
残差网络ResNet代码解读//部分内容非常细节与“PyTorch ResNet 使用与源码解析”互补
最后这里贴一份Pytorch_cifar10的源码方便实践:
Pytorh_resnet_cifar10理论与实践(待完成)_To be a better man-CSDN博客
其他资料:
深度学习网络篇——ResNet//总体把握,人物介绍
深度学习网络篇——ResNet_PRIS-SCMonkey的博客-CSDN博客_resnet网络
PyTorch中网络里面的inplace=True字段的意思 - 简书
transforms.Compose() ,图像的一些处理操作