tf.nn.conv2d_transpose和slim.conv2d_transpose之间的区别

时间:2018-12-07 09:57:27

标签: tensorflow deconvolution

Tensorflow中这两个函数有什么区别

tf.nn.conv2d_transpose(
    value,
    filter,
    output_shape,
    strides,
    padding='SAME',
    data_format='NHWC',
    name=None
)

完整定义在tf.nn.conv2d_transpose中 slim.conv2d_transpose定义如下:

tf.layers.conv2d_transpose(
    inputs,
    filters,
    kernel_size,
    strides=(1, 1),
    padding='valid',
    data_format='channels_last',
    activation=None,
    use_bias=True,
    kernel_initializer=None,
    bias_initializer=tf.zeros_initializer(),
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,
    name=None,
    reuse=None
)

完全定义是在slim.conv2d_transpose

如何在slim.conv2d_transpose中定义输出形状

1 个答案:

答案 0 :(得分:1)

它们之间存在显着差异。 tf.nn.conv2d_transpose代表计算图中的一个操作,而tf.layers.conv2d_transpose定义了整个层。

更精确的tf.nn.conv2d_transpose将卷积filter应用于inputs

另一方面,

tf.layers.conv2d_transpose首先根据给定的参数创建可训练变量,将其用作filter,然后在内部调用某些conv2d_transpose操作。根据这些参数,它还应用了其他一些操作,例如增加偏差,应用非线性或标准化权重或输入。

对于tf.layers.conv2d_transpose,您无需指定output shape,因为它是根据过滤器大小,输入大小和跨度计算得出的。 Here是公式。