【问题标题】:How can the input shape of a CNN be modified?如何修改 CNN 的输入形状?
【发布时间】:2021-07-06 06:25:48
【问题描述】:

我正在关注this 论文以创建超分辨率 CNN。该论文将训练图像拆分为较小的子图像进行训练。为此,我使用了 96x96 的子图像大小。我的模型如下所示:

    model = tf.keras.Sequential()

    # features
    model.add(Conv2D(d, 5, input_shape=(96, 96, 1), padding="same"))
    model.add(PReLU())

    # shrinking
    model.add(Conv2D(s, 1, padding="same"))
    model.add(PReLU())

    ... more convolution layers

    model.add(Conv2DTranspose(1, 9, strides=scale_factor, padding="same"))

这给出了一个按比例因子放大的输出图像。这可以正常工作,并且在经过训练后会输出高质量的图像。但是,我只能输入 96x96 的图像。我希望能够输入任何图像并获得正确的放大输出。问题在于 PReLU 激活层的参数数量随输入大小而变化。我假设使用 ReLU 可以避免这个问题,因为不会有额外的参数。但是,论文作者似乎避免了这个问题,我也想这样做。

那么有什么方法可以让我传递任意大小的图像吗?我似乎无法弄清楚论文作者是如何做到的

【问题讨论】:

  • 目前,无法将任意大小的图像传递给 Keras 模型。为了计算过滤器的形状(在 Conv 层中),需要固定的输入大小。

标签: python tensorflow keras conv-neural-network


【解决方案1】:

据我了解,您在特定的输入大小上训练您的网络,然后它不能处理任意图像,因为它只接受分辨率(输入大小)。如果您希望它处理任意图像,则必须添加一个函数,该函数将在图像进入您的 CNN 之前调整其大小。

【讨论】:

  • 绝对不是这样,论文将图像分割成更小的子图像,最终结果显示在全尺寸图像上
猜你喜欢
  • 2018-08-23
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多