【问题标题】:What is the difference between tensorflow conv2d_transpose and conv2d_backprop_filter?tensorflow conv2d_transpose 和 conv2d_backprop_filter 有什么区别?
【发布时间】:2017-03-15 19:18:04
【问题描述】:

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

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

【问题讨论】:

  • 你有没有做过任何研究?展示你的发现?
  • 到目前为止我的理解是 conv2d_transpose 执行反卷积操作,将原始图像返回(有损失)。我不明白它与 backprop_filter 的区别。我是 Tensorflow 的新手,想更深入地了解 Tensorflow 中的卷积

标签: tensorflow convolution backpropagation deconvolution


【解决方案1】:

对于 conv2d_transpose 的解释,我会查看其他堆栈溢出问题,例如:conv2d_transpose

关于 conv2d_backprop_filter: 这是在反向传播期间计算并传递给前一层的内容。它已被用于诸如 Deep Dream 和对抗性示例的创建等方面。

【讨论】:

  • 好吧,我应该使用 conv2d 然后 tf.nn.conv2d_backprop_filter 执行卷积和反向道具,还是应该执行 conv2d 然后执行 tf.nn.conv2d_backprop_input?
  • 如果您使用 tensorflow 提供的标准优化器之一,那么您根本不需要其中任何一个。如果您在网络中特别需要梯度以用于其他目的(例如可视化),或者您想在应用它们之前修改一些特定的梯度等,您才需要它们。这意味着您可以设置您的网络来执行卷积并允许 tensorflow 执行使用提供的优化器之一自行反向传播。
  • 我的目标是对卷积操作进行计时。前向和后向通过卷积。那么我应该使用onv2d_backprop_filter还是tf.nn.conv2d_backprop_input呢?
  • 要进行正确的反向传播,您实际上必须同时使用两者,因为一个用于更新前一层,另一个用于更新过滤器。
  • 太棒了!谢谢!
【解决方案2】:

请参阅此answer 以获取有关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 是计算梯度最快的方法

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2016-11-15
    相关资源
    最近更新 更多