【问题标题】:Why back propagation for Conv in tensorflow are separated into two operations?为什么张量流中 Conv 的反向传播分为两个操作?
【发布时间】:2018-12-19 09:37:52
【问题描述】:

我正在尝试用c++和cuda在tensorflow中实现一个自定义卷积操作,我发现tensorflow中Conv2D的反向传播是通过two separate operations.实现的,确实,我发现有两种操作实现,即@ tensorflow源码中的987654322@和conv_grad_input_ops.cc,表示分别计算filter和input的梯度。请问这个实现背后的想法是什么?为什么不将它们简单地合并为一个操作?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    好的,我做了一个测试,发现如果将不同输入的反向传播分成不同的 TF 操作,与封装到一个单独的 TF 操作相比,速度会提高大约 30%。这有悖于直觉,也许与 TF 的架构有关。注意:我的测试基于 CUDA im2col/col2im 和 CuBLAS 而不是 CuDNN。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-30
      • 2017-09-03
      • 2018-08-12
      • 1970-01-01
      • 2017-11-01
      • 2017-04-01
      • 1970-01-01
      相关资源
      最近更新 更多