【问题标题】:Why does tf.keras.layers.Conv2DTranspose need no output_shape compared to tf.nn.conv2d_transpose?为什么 tf.keras.layers.Conv2DTranspose 与 tf.nn.conv2d_transpose 相比不需要 output_shape?
【发布时间】:2019-04-24 08:41:10
【问题描述】:

我在这里缺少一些基本的东西。但我总是使用tf.nn API 进行转置卷积,我必须在其中指定输出形状,因为它是模棱两可的(Link)。 但是,对于 TF 2.0,我切换到 Keras 子类化,现在我想知道为什么我不必在更高级别的 API 中为转置卷积指定输出形状。他们如何精确计算?

【问题讨论】:

    标签: tensorflow conv-neural-network transpose autoencoder tensorflow2.0


    【解决方案1】:

    tf.keras.layers.Conv2DTranpose 通过tf.keras.backend.conv2d_transpose 后端到tf.nn.conv2d_transpose

    要计算tf.nn.conv2d_transposeoutput_shape 参数,它使用函数deconv_output_length(定义here):

    def deconv_output_length(input_length, filter_size, padding, stride):
      """Determines output length of a transposed convolution given input length.
      Arguments:
          input_length: integer.
          filter_size: integer.
          padding: one of "same", "valid", "full".
          stride: integer.
      Returns:
          The output length (integer).
      """
      if input_length is None:
        return None
      input_length *= stride
      if padding == 'valid':
        input_length += max(filter_size - stride, 0)
      elif padding == 'full':
        input_length -= (stride + filter_size - 2)
      return input_length
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2021-06-07
      相关资源
      最近更新 更多