【问题标题】:Tensorflow's tf.nn.conv2d_transpose parametersTensorflow 的 tf.nn.conv2d_transpose 参数
【发布时间】:2018-04-11 18:44:12
【问题描述】:

最近我一直在尝试理解 tensorflow 的tf.nn.conv2d_transpose,但是我很难理解它的输入参数。定义为:

tf.nn.conv2d_transpose(value, filter, output_shape, strides, padding='SAME')

例如,假设我有一个大小为[batch_size, 7, 7, 128] 的图像,并且想要将其转换为[batch_size, 14, 14, 64]。然后output_shape=[batch_size, 14, 14, 64]strides=[2,2],但是我不知道如何获得过滤器的形状。有什么想法吗?

此外,padding="SAME" 如何为conv2d_transpose 工作?它是应用于输出图像还是输入?

【问题讨论】:

    标签: python tensorflow machine-learning computer-vision conv-neural-network


    【解决方案1】:

    对于关于过滤器形状的第一个问题,我会使用面向对象的版本tf.layers.Conv2DTranspose 并查看kernel 属性来确定过滤器形状:

    >>> import tensorflow as tf
    >>> l = tf.layers.Conv2DTranspose(filters=64, kernel_size=1, padding='SAME', strides=[2, 2])
    >>> l(tf.ones([12, 7, 7, 128]))
    <tf.Tensor 'conv2d_transpose/BiasAdd:0' shape=(12, 14, 14, 64) dtype=float32>
    >>> l.kernel
    <tf.Variable 'conv2d_transpose/kernel:0' shape=(1, 1, 64, 128) dtype=float32_ref>
    >>> 
    

    在第二个填充问题上,conv2d_transpose 计算 conv2d 的梯度。由于conv2d 填充了其输入,conv2d_transpose 需要填充其输出以适应渐变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      相关资源
      最近更新 更多