python利用tensorflow识别图形_为什么PyTorch与TensorFlow一样快(有时更快)

由于两个库都在后台使用cuDNN,因此我希望各个操作的速度相似。但是,TensorFlow(在图形模式下)会编译图形,因此当您运行实际的火车循环时,在session.run调用之外没有python开销。在PyTorch中,由于动态图,您在Python中使用了很多东西,所以我希望这会增加一些开销。更不用说拥有静态图形的事实意味着您可以图形优化,例如节点修剪和排序操作。但是在网上可以看到的许多基准测试中,PyTorch在GPU上紧跟TensorFlow都没有问题。

一个具体的示例是两个库中的Adam实现:

https://github.com/pytorch/pytorch/blob/master/torch/optim/adam.py

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/adam.py

8ce58c6bf9c11acff90d293fbd746fd8.png

PyTorch拥有您所期望的所有操作。对于{_resource} _apply_dense情况下的TensorFlow(这是常见情况,即AFAIK),TensorFlow具有专用的C ++实现。因此,在这里TensorFlow不会在Python上花费额外的时间,并且在C ++中具有优化的实现。在这种情况下,为什么TensorFlow版本不会更快上升呢?

f8f75e3e6f47c646f8752f7c553a6ded.png

我听说PyTorch在cuDNN级别上得到了更好的优化。谁能提供更多有关此的详细信息?是什么导致TensorFlow无法做同样的事情?我知道的唯一优化是PyTorch使用NCHW格式(对于cuDNN更好地进行了优化),而TensorFlow默认使用NHWC。更新:看起来新的Volta GPU在NHWC格式(TensorFlow的默认设置)下表现更好:https ://devblogs.nvidia.com/tensor-core-ai-performance-milestones/

我看到了这两个讨论,但没有找到满意的答案:

https://www.reddit.com/r/MachineLearning/comments/7ujc6y/d_can_someone_give_a_technical_explanation_as_to/

https://www.reddit.com/r/MachineLearning/comments/8iguaw/d_why_is_tensorflow_so_slow/

更新:看起来新的Volta GPU在NHWC格式(TensorFlow的默认设置)下表现更好:https ://devblogs.nvidia.com/tensor-core-ai-performance-milestones/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值