初学者Pytorch 和 Caffe 使用对比

初学者比较关心的问题就是好不好上手,以及是否容易扩展。我把这两个平台作为论文实现的工具,代码能力有限,所以在一个初学者角度说一下在自己的感想。

安装难易度:caffe>pytorch

caffe部署我是遇到不少麻烦的,特别是实验室很多人共用一个路径,环境比较乱,编译caffe基本上不可能不遇到问题,大部分问题baidu一下都可以解决。caffe最近又有了caffe2,要求是CUDA8.0 cudnn6及以上,CUDA7.5没戏,资料较少。

pytorch

配合anaconda使用,特别好用,conda一个新的环境,多少个人共用服务器也不会乱。需要注意的一点是,conda虽然会帮助大家配包,但是不会对照你的cuda版本和cudnn版本,所以安装pytorch的时候,建议CUDA-toolkit和cudnn的python包自己选择对应版本安装,然后再conda install pytorch。否则可能服务器上是CUDA7.5但是conda给安装了CUDA8.0的toolkit,GPU就没法用了。

上手难易度:caffe

caffe

优点:prototxt结构非常清晰,一个网络结构文件,一个solver文件,结构清晰,简单易懂,还有在线的netscope可以直接复制网络结构代码,可以直观的获得网络结构的图形化表示。网络每层的weight和bias可以分别设置不同的学习速率。

缺点:不支持3D卷积。如果网络比较大,每层属性差不多,仍然需要逐层编写,比较繁琐。

pytorch

优点:网络灵活性高,支持动态图。python脚本语言,易于扩展。支持3D卷积。如果一个网络很多层,每层结构差不多,可以编写代码循环生成这些层,比较简洁。

缺点:灵活性太高,网络结构图形化表示相对困难,有一位大牛写了个代码,用起来不是很easy,出来的图也不如caffe那个好看。想要分别设定weight和bias的学习速率貌似不太容易。

扩展难易度:caffe>pytorch

caffe:对于不熟悉C++编程的人,扩展难度大,可以考虑使用python layer进行扩展。

pytorch: 相对容易,Variable可以自动求导。只用写forward函数就可以。

性能:

目前我跑过的网络,pytorch的网络结果比caffe略低。pytorch相比caffe占用内存更多,速度不如caffe。但是如果要复现各种论文,设计自己的loss函数,pytorch比较容易编写。比起caffe不支持这不支持那,pytorch支持的运算更多,更灵活。caffe2现在已经支持ND卷积,也解决了caffe部署困难的情况,可惜资料较少。等过完年我把CUDA升个级装一下caffe2试试。




你可能感兴趣的:(caffe,pytorch)