具有动态输入形状的CNN

时间:2019-04-19 10:28:32

标签: python tensorflow machine-learning deep-learning conv-neural-network

大家好!

由于我正在尝试建立一个将灰度图像转换为rgb图像的全卷积神经网络,所以我想知道是否可以在不同尺寸的图像(不同的像素和比率)上训练和测试模型。通常,您只是降低采样率或提高采样率,而这是我不想做的。我听说如果使用完全卷积神经网络是可能的,但是我仍然不知道代码是什么样。您能帮我一些代码吗?

为什么会出现问题?

就像我说的那样,不应对输入图像进行降采样,因为我没有对任何图像进行分类。我想产生一个与输入图像大小相同的新图像。因此,不应有任何损失。

用于固定输入形状的代码:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...

图片尺寸为28 * 28px

我认为它可能如何工作:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(None, None, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...

具有不同尺寸的图像

  • image1 = 256 * 300
  • image2 = 1024 * 800
  • image3 = 500 * 400

Here是自动编码器的一个示例,该编码器将灰度图像转换为rgb图像,但是该输入编码器具有固定的输入形状。

enter image description here

*我正在使用TF 2.0 Alpha

1 个答案:

答案 0 :(得分:0)

我发现,卷积神经网络根本不关心输入形状。它关心的是内核大小,步幅和填充。例如,设置内核大小= 3,步幅= 1,填充= 1不会更改张量形状。当涉及池化时,必须确保添加了padding = 1,这称为一半/相同的填充http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html)。因此,有可能制造出能够处理不同大小图像的全卷积自动编码器。

相关问题