从网络丢失中排除零填充区域 - Keras 2.0 Theno Backend(分段网络)

时间:2017-06-21 07:22:38

标签: keras padding theano loss

我正在使用Theano后端在Keras培训分段网络,我正在使用带有flow_from_directory的ImageDataGenerator。

我的图片尺寸灵活。为了使用flow_from_directory,您必须指定固定大小(target_size)并在读取图像时,该函数会自动填充原始图像边界之外的点。

目前我将此指定大小设置为大于我最大图像的值 - 比如说最大图像可能是300x400,我将target_size修复为400x400并使用fill_mode ='constant'和cval = 0来填充原始图像之外的点零。

现在我的问题如下。在训练期间,我不希望这些填充区域完全有助于我的损失功能。有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

Masking可以帮到你。

  

使用掩码值来跳过时间步长来掩盖序列。

     

对于输入张量中的每个时间步长(张量中的维#1),如果该时间步长的输入张量中的所有值都等于mask_value,那么将在所有下游层中屏蔽(跳过)时间步长(因为他们支持掩蔽)。

     

如果任何下游层不支持屏蔽但接收到这样的输入掩码,则会引发异常。

它在技术上是为时间序列而制作的,但它也应该适用于图像,并进行一些调整。 Here你可以找到一些尝试(以及一些替代方案)。