对于像我这样刚刚入门深度学习的同学来说,可能接触学习了一个开发工具,却没有通过运用来熟练的掌握它。而ResNet是深度学习里面一个非常重要的backbone,并且ResNet18实现起来又足够简单,所以非常适合拿来练手。
我这里的开发环境是:
首先,我们需要明确ResNet18的网络结构。在我自己学习的一开始,我对于ResNet的ShortCut机制的实现不是很清楚,当你知道怎么实现这个机制之后,那么剩下的部分也就没有什么挑战了。
论文中,ResNet各规模的结构如下:
我们观察,实际可以将ResNet18分成6个部分:
具象化,就是下图:
明确这些部分之后,我们就可以开始着手实现啦!
首先,实现残差块:
接着,我们实现ResNet18模型:
到这里,一个ResNet18模型就构建完成了。
不过,仅仅是搭建完成还是远远不够的,让我们拿它来练练手。笔者在jupyter notebook上使用CIFAR10数据集来测试我们的ResNet18模。
然后开始跑模型:
如果不出意外,这个模型就已经跑起来了,到这里,咱们就已经完成的实现了一个ResNet18网络,这个模型的jupyter notebook源码我已经放到了github上,如果这片文章对你有帮助,那就给我star一下吧:
ResNet18-Pytorch:https://github.com/samcw/ResNet18-Pytorch