keras层Masking()和Embedding(mask_zero = True)之间是否存在差异?

时间:2017-08-10 13:42:49

标签: python tensorflow keras masking keras-layer

嵌入层的文档在这里:

https://keras.io/layers/embeddings/

并且Masking层的文档在这里:

https://keras.io/layers/recurrent/

我无法找到差异。在某些情况下是否应该优先选择其中一层?

1 个答案:

答案 0 :(得分:1)

我觉得Masking()更能掩盖时间步骤;而嵌入(mask_zero = True)更像是一个数据过滤器。 掩蔽:

  
    

如果该时间步长的输入张量中的所有值都等于mask_value,那么将在所有下游层中屏蔽(跳过)时间步长

  

使用任意mask_value。因此,您可以根据数据决定跳过没有输入的时间步或者您可以想到的其他条件。

对于嵌入,您在输入跳过计算上覆盖输入= 0的数据的掩码。这样,您可以在单个时间步骤中传播完整数据(部分数据),无数据通过网络传播。这不是时间步骤#3或类似的屏蔽,它是输入数据#i的屏蔽。此外,只能屏蔽输入(输入= 0)。

因此,我确实可以想到两者完全相等的情况(当输入= 0时,所有输入都为0),但是它们的使用是另一种分辨率。