今天回顾了ResNet的论文Deep Residual Learning for Image Recognition,又结合PyTorch官方代码,整理一遍ResNet的结构,在这里写个总结。
首先,ResNet在PyTorch的官方代码中共有5种不同深度的结构,深度分别为18、34、50、101、152(各种网络的深度指的是“需要通过训练更新参数”的层数,如卷积层,全连接层等),和论文完全一致。图1是论文里给出每种ResNet的具体结构:
![ed3824498a471aba833ca95caf39cdec.png](https://i-blog.csdnimg.cn/blog_migrate/db3c6713f4aa01b68709b9e6faf135d0.jpeg)
图1 不同深度ResNet的具体结构
其中,根据Block类型,可以将这五种ResNet分为两类:(1) 一种基于BasicBlock,浅层网络ResNet18, 34都由BasicBlock搭成;(2) 另一种基于Bottleneck,深层网络ResNet50, 101, 152乃至更深的网络,都由Bottleneck搭成。Block相当于积木,每个layer都由若干Block搭建而成,再由layer组成整个网络。每种ResNet都是4个layer(不算一开始的7×7 7times77×7卷积层和3×3 3times33×3maxpooling层),如图1,conv2_x对应layer1,conv3_x对应layer2,conv4_x对应layer3,conv5_x对应layer4。方框中的“×2 time