python - 具有动态输入形状的 CNN

标签 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)))
...

具有不同尺寸的图像

  • 图片1 = 256*300
  • 图片2 = 1024*800
  • 图片3 = 500*400

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

enter image description here

*我使用的是 TF 2.0 Alpha

最佳答案

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

关于python - 具有动态输入形状的 CNN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55760425/

相关文章:

比较两个非常大的数字时出现Python不一致错误

python - 匹配多行文本 block 的正则表达式

python - mxnet 和 tensorflow 中错误的 gpu 顺序

python - 输出Keras中add_loss添加的多重loss

python-3.x - 索引错误: index 69791 is out of bounds for axis 0 with size 56044

python - 我如何区分和修补/merge 字符串而不是文件?

python - GTK3+ 和 Python 中的线程同步

tensorflow - tensorflow分布式进程中的任务分配

python - 如何将以下顺序模型转换为keras中的函数模型

python-3.x - 运行经过训练的机器学习模型时出现错误