keras 层 Masking() 和 Embedding(mask_zero =True) 之间有区别吗?

Mim*_*ler 5 python masking keras tensorflow keras-layer

嵌入层的文档在这里:

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

Masking 层的文档在这里:

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

我在那里找不到区别。在某些情况下应该首选其中一层吗?

Uva*_*var 1

我觉得 Masking() 更像是时间步长的掩蔽;而 Embedding(mask_zero=True) 更多的是一个数据过滤器。掩蔽:

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

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

对于嵌入,您可以在输入上叠加一个掩码,跳过输入 = 0 的数据的计算。这样,您可以在单个时间步长内通过网络传播完整数据、部分数据或无数据。这不是时间步骤#3 或类似内容的屏蔽,而是输入数据#i 的屏蔽。另外,只有没有输入(输入=零)时才可以被屏蔽。

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