进入研究生生活已经有三个月了,每天的生活就是上课、看论文、跑模型,也从来没有自己动手写过完整的模型。最近想在一个Caffe模型上加个模块,奈何实在改不动Caffe代码(C++忘的差不多了,日后一定好好看看Caffe底层),于是转战PyTorch。
本文主要介绍一下注意事项,不具体展开介绍怎么样一步一步来,只说明一下大致步骤,具体细节只有做了才能明白。
Caffe网络结构的迁移
Caffe的网络结构看起来不是非常的清楚,可以借助可视化网站来查看原程序的网络。PyTorch中nn.Module提供的层包含了Caffe中的层,迁移起来很方便。可阅读这篇文章Caffe代码转化为PyTorch代码
迁移时,尽量保持每一层的名称与Caffe相对应,避免以后模型加载的麻烦。
坑:Caffe中反卷积层默认采用向上取整,而PyTorch中的反卷积层默认采用向下取整,很可能导致迁移后数据结果与Caffe的输出结果不一致。此处提供两篇文章PyTorch取整方式和Caffe取整方式供参考。