为什么tf.keras.layers.Conv2DTranspose与tf.nn.conv2d_transpose相比不



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

tf.keras.layers.Conv2DTranpose后端通过

tf.keras.backend.conv2d_transpose tf.nn.conv2d_transpose

为了计算tf.nn.conv2d_transposeoutput_shape参数,它利用函数deconv_output_length(定义如下(:

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

相关内容

  • 没有找到相关文章

最新更新