我应该冻结哪些层来微调keras上的resnet模型



我已经知道如何在vgg(微调最后一个conv块)和inception(微调前两个块)上做到这一点。我想知道为了微调resnet模型,建议冻结哪些层。

我认为这方面没有最先进的策略,但我可以与您分享我对这个主题的想法(层的名称与此处所示类似:

  1. 在有大量真实世界照片数据的情况下:冻结所有阶段直到第4阶段(只保留第5阶段可训练)。如果你装得太满,那么第五阶段的层数就更少。如果底层解冻第四层的一半。请记住,网络越深入,ImageNet的特定功能就越多。

  2. 如果有一些真实世界的照片:切第5段,让第4段的一半可以训练,剩下的冻结。如果切得过多,继续切第4段,如果切得不够,继续伸展。

  3. 如果有很多简单的照片数据(例如医学数据)-剪切第4和第5个-保留第3个可训练数据并冻结其余数据。如果过多-保持剪切-填充不足-尝试第2点。

  4. 如果有一些简单(小于10K)的照片数据,我建议不要使用ResNet50。根据我的经验,它严重过度了。我通常实现类似于ResNet18的自定义拓扑。如果你仍然想尝试,请尝试第三点的说明。

最新更新