Tensorflow&#t; tf.nn.conv2d_transpose参数

时间:2018-04-11 18:44:13

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

最近我一直试图理解张量流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?它是应用于输出图像还是输入?

1 个答案:

答案 0 :(得分:0)

关于过滤器形状的第一个问题,我使用面向对象的版本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需要填充其输出以适合渐变。