【问题标题】:Strange padding layer output奇怪的填充层输出
【发布时间】:2020-08-23 02:03:01
【问题描述】:

我正在尝试构建一个看起来像这样的模型。

注意填充层的输出形状是1 * 48 * 48 * 32。填充层的输入形状是1 * 48 * 48 * 16。这是哪种类型的填充操作?

我的代码:

    prelu3 = tf.keras.layers.PReLU(shared_axes = [1, 2])(add2)
    deptconv3 = tf.keras.layers.DepthwiseConv2D(3, strides=(2, 2), padding='same')(prelu3)
    conv4 = tf.keras.layers.Conv2D(32, 1, strides=(1, 1), padding='same')(deptconv3)
    maxpool1 = tf.keras.layers.MaxPool2D()(prelu3)
    pad1 = tf.keras.layers.ZeroPadding2D(padding=(1, 1))(maxpool1) # This is the padding layer where problem lies.

这是试图复制该块的代码部分。但是,我得到的模型看起来像这样。

我在这里遗漏了什么还是我使用了错误的图层?

【问题讨论】:

  • 每个输入都是一个 [48 * 48 * 32] 数组对吧?
  • 是的。该图是使用 netron 网站从 Tflite 模型生成的。

标签: python tensorflow keras keras-layer


【解决方案1】:

默认情况下,keras maxpool2d 接受:

Input shape : 4D tensor with shape (batch_size, rows, cols, channels).
Output shape : (batch_size, padded_rows, padded_cols, chamels)

请在此处查看zero_padding2d keras 中的图层文档。

在这方面,您正试图将这里被视为频道的内容加倍。 您的输入看起来更像 (batch, x, y, z) 并且您想要 (batch, x, y, 2*z) 为什么要使用零填充来使 z 加倍?我宁愿建议你使用像

这样的密集层
tf.keras.layers.Dense(32)(maxpool1)

这会将 z 形状从 16 增加到 32。

已编辑:

我有一些东西可以帮助你。

tf.keras.layers.ZeroPadding2D(
    padding=(0, 8), data_format="channels_first"
)(maxpool1)

它的作用是将你的 y、z 视为 (x, y) 并将 x 视为通道并在 (y, z) 周围填充 (0, 8) 以给出 (y, 32)

演示:

import tensorflow as tf
input_shape = (4, 28, 28, 3)
x = tf.keras.layers.Input(shape=input_shape[1:])
y = tf.keras.layers.Conv2D(16, 3, activation='relu', dilation_rate=2, input_shape=input_shape[1:])(x)
x=tf.keras.layers.ZeroPadding2D(
    padding=(0, 8), data_format="channels_first"
)(y)
print(y.shape, x.shape)

(None, 24, 24, 16) (None, 24, 24, 32)

【讨论】:

  • 我正在尝试在 TensorFlow 中重新创建一个复杂的模型。添加一个密集层将为我提供所需的尺寸,但正如您所见,我正在尝试重新创建的模型中没有密集层。
  • 好的,所以你希望你的 32 使用 zeropadding 加倍吗?
  • 是的。我认为这是一个通道填充的情况。但我找不到任何例子。供您参考,我正在尝试复制此model
  • 谢谢会通过,你能告诉你模型的输入是什么,x,y,z在(batch,x,y,z)中代表什么。
  • 我模型的输入是一个形状为 1 * 192 * 192 * 3 的图像。它通过一堆卷积层和 prelu 层,然后到达图像所示的部分。图像中显示的 prelu 层的输入形状为 1 * 96 * 96 * 16。
猜你喜欢
  • 2017-08-03
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
相关资源
最近更新 更多