支持语言
tensorflow:支持C++ 和 python 编程
pytorch:支持python编程
支持硬件
tensorflow:CPU、 GPU、 移动设备
pytorch:CPU 、GPU
灵活性
tensorflow:静态计算图,数据参数在CPU与GPU之间迁移麻烦,调试麻烦
pytorch:动态计算图,数据参数在CPU与GPU之间迁移十分灵活,调试简便
学习难易
tensorflow:社区庞大,bug基本能找到解决办法。学习难度中等,使用一般,新手容易掉坑。官网发布的文档详细。
pytorch:社区正在扩大,部分bug查不到解决方案。学习难度低,使用简单,新手入门容易。官网发布的文档正在扩充。
计算速度
同等条件下:
tensorflow 在CPU上运行速度比 pytorch 快
tensorflow 在GPU上运行速度和 pytorch 差不多
依赖库
tensorflow:支持更多库函数,比如图像数据预处理方式会更多
pytorch:正在扩充,未来和tensorflow应该差别不大
数据加载
tensorflow:API设计庞大,使用有技巧,但有时候不能直接把数据加载进TensorFlow
pytorch:API整体设计粗糙,但加载数据的API设计很友好。加载数据的接口由一个数据集、一个取样器和一个数据加载器构成。
设备管理
tensorflow:不需要手动调整,简单
pytorch:需要明确启用的设备
关于这点,凭个人喜好,我比较喜欢手动启用CUDA_VISIBLE_DEVICES,我个人对内存、显存的管理较严
两种深度学习框架选择
tensorflow:新手,自学能力强的,入门推荐
pytorch:新手,改bug能力强的,入门推荐
两者都不是的新手,入门推荐 caffe,目前企业用caffe居多,比如腾讯
建议:深度学习几大框架都用一遍,这样不同项目就知道该用哪种框架