【发布时间】: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