tensorflow conv2d_transpose 和 conv2d_backprop_filter 有什么区别?

What is the difference between tensorflow conv2d_transpose and conv2d_backprop_filter?

有人可以用简单的术语和示例解释这些在执行 conv2d 前向传递后如何工作。

让我补充一下这个问题 - conv2d_backprop_filter 和 tf.nn.conv2d_backprop_input 有什么区别?

为了解释 conv2d_transpose,我会查看其他堆栈溢出问题,例如:

至于conv2d_backprop_filter: 这是在传递给上一层的反向传播过程中计算出来的。它已被用于 Deep Dream 和创建对抗性示例等。

请参阅此 以获取示例中 tf.nn.conv2d_backprop_inputtf.nn.conv2d_backprop_filter 的详细示例。

对您问题的简短回答:

tf.nn中,有4个密切相关的2d conv函数:

  • tf.nn.conv2d
  • tf.nn.conv2d_backprop_filter
  • tf.nn.conv2d_backprop_input
  • tf.nn.conv2d_transpose

给定out = conv2d(x, w)和输出梯度d_out:

  • 使用tf.nn.conv2d_backprop_filter计算过滤器梯度d_w
  • 使用tf.nn.conv2d_backprop_input计算过滤器梯度d_x
  • tf.nn.conv2d_backprop_input可以通过tf.nn.conv2d_transpose
  • 实现
  • 以上4个功能都可以通过tf.nn.conv2d
  • 实现
  • 实际上,使用 TF 的 autodiff 是计算梯度的最快方法