目前发现 pytorch1.0 与 tensorflow1.12 一些区别

版权声明:本文为博主的文章,未经博主禁止可以随意转载。 https://blog.csdn.net/ONE_SIX_MIX/article/details/86671573

pytorch 与 tensorflow1.12 的 eager execution 对比

pytorch没有完整的half支持
例如
conv2d 以半精度训练 cpu 运行时会报错未实现
torch.cat 无法拼接 halfTensor,报错未实现
torch.linspace 参数 dtype=torch.half,报错未实现

tensorflow 有完整的半精度训练实现(应该是这样,目前还没遇到全精度可以而半精度报未实现错误)

这个对我较重要,深度分离卷积太极限了,常用组卷积降低参数数量
pytorch有原生组卷积的实现,运行速度相当快。
tensorflow没有原生组卷积实现,手写的组卷积运行速度相当慢。。。组卷积的可以并行运算的,但是在python里只能在一个循环里运行,一个一个算,另外组卷积数量一多,defun后第一次运行速度(编译模型需要非常长时间,最长试过接近15分钟)就相当慢了

pytorch的模型无法加速
tensorflow 模型可以有 defun 和 autograph 加速
相同的模型,在tf模型无加速的时候,pytorch模型运行较快,在tf有加速时,tf运行更快

pytorch的模型在训练时更改批量大小非常自然,没有问题
tensorflow模型在defun优化之后,更改批量大小后第一次训练非常慢,估计在重新初始化什么东西

pytorch的内存使用效率相比tensorflow高很多
1.pytorch的内存是随用随释放的,显存占用率就是实际的占用。而tf则是能用多少就用多少,开启按需分配之后,仍然不会自动释放显存
2.相同的resnet模型,pytorch训练时的批量大小可以比tensorflow大一点,并且,在半精度训练时,pytorch可以增加接近一倍的批量大小,而tensorflow增加批量大小较少。

这个问题比较大
pytorch没有足够多的支持,除了模型之外,几乎啥都没了,pytorch也没有优化的工具。
tensorflow有完整的产品支持。可以说是训练好之后,有一整条优化和部署,上线工具,例如tensorflow server,tensorflow模型转int8模型,还有加速数据处理的tensorflow.data类和tensorflow.image函数

最后还是希望 tensorflow2.0 Release版尽快出来。。。

猜你喜欢

转载自blog.csdn.net/ONE_SIX_MIX/article/details/86671573