Keras可以处理不同大小的输入图像吗?
deep-learning
keras
machine-learning
8
0

Keras可以处理不同大小的输入图像吗?例如,在全卷积神经网络中,输入图像可以具有任何大小。但是,在使用Keras创建网络时,需要指定输入形状。因此,如何在不将输入图像调整为相同大小的情况下使用Keras处理不同的输入大小?谢谢你的帮助。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

是。只需将输入形状更改为shape =(n_channels, NoneNone )。其中n_channels是输入图像中的通道数。

我正在使用Theano后端 ,因此如果您使用的是Tensorflow,则可能必须将其更改为(None,None,n_channels)

您应该使用:

input_shape =(1,无,无)

形状中没有一个表示可变尺寸。请注意,并非所有图层都可以使用这种可变尺寸,因为某些图层需要形状信息(例如Flatten)。 https://github.com/fchollet/keras/issues/1920

例如,使用keras的功能API,您的输入层将是:

对于RGB数据集

inp = Input(shape=(3,None,None))

对于灰色数据集

inp = Input(shape=(1,None,None))
收藏
评论

使用相同的计算内核实现任意大小的输入数组可能会带来很多挑战-例如,在GPU上,您需要知道要保留多大的缓冲区,而更不了解要展开多少循环,等等。这是Keras要求的主要原因恒定的输入形状,可变大小的输入很难处理。

这在处理可变长度序列(如NLP中的句子)时更常见。常见的方法是确定大小的上限 (并裁剪较长的序列),然后使用零填充序列直至达到该大小。

(您还可以在零值上包括掩码以跳过对填充区域的计算,除了Keras中的卷积层可能仍不支持掩码输入...)

我不确定对于3D数据结构来说,填充的开销是否不高-如果您开始遇到内存错误,最简单的解决方法是减小批处理大小。让我们了解您在图片上应用此技巧的经验!

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号