为什么将Conv在张量流中的反向传播分为两个操作?

时间:2018-12-19 09:37:52

标签: tensorflow

我正在尝试使用c ++和cuda在tensorflow中实现自定义卷积操作,并且我发现通过two separate operations.实现了在Tensorflow中对Conv2D的反向传播,的确,我发现有两种操作实现,即张量流源代码中的conv_grad_filter_ops.ccconv_grad_input_ops.cc,这意味着分别计算滤波器和输入的梯度。请问这种实施背后的想法是什么?为什么不将它们简单地合并为一个操作?

1 个答案:

答案 0 :(得分:0)

好吧,我做了一个测试,发现如果将不同输入的反向传播拆分为不同的TF ops,而不是包装为一个TF op,则速度提高了约30%。这违反直觉,也许与TF的体系结构有关。注意:我的测试是基于CUDA im2col / col2im和CuBLAS而不是CuDNN。