Hoo*_*ben 29 machine-learning deep-learning keras
Keras可以处理不同大小的输入图像吗?例如,在完全卷积神经网络中,输入图像可以具有任何大小.但是,我们需要在Keras创建网络时指定输入形状.因此,我们如何使用Keras处理不同的输入大小而不将输入图像调整为相同的大小?谢谢你的帮助.
小智 31
是.只需将输入形状更改为shape =(n_channels,None,None).其中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))
Run Code Online (Sandbox Code Playgroud)
对于灰色数据集
inp = Input(shape=(1,None,None))
Run Code Online (Sandbox Code Playgroud)
Pet*_*dis 15
使用相同的计算内核实现任意大小的输入数组可能会带来许多挑战 - 例如在GPU上,您需要知道要保留多大的缓冲区,以及更多地展开循环的数量等等.这是Keras要求的主要原因恒定的输入形状,可变大小的输入太难以处理.
这在处理NLP中的句子等可变长度序列时更常见.常见的方法是建立大小的上限(和更长的序列),然后用零填充序列到这个大小.
(您还可以包括屏蔽零值以跳过填充区域上的计算,除了Keras中的卷积层可能仍然不支持屏蔽输入...)
我不确定对于3D数据结构,填充的开销是不是过高 - 如果你开始出现内存错误,最简单的解决方法是减少批量大小.让我们知道您在图像上应用此技巧的经验!
| 归档时间: |
|
| 查看次数: |
18529 次 |
| 最近记录: |