【问题标题】:Is there is difference between the keras layers Masking() and Embedding(mask_zero =True)?keras 层 Masking() 和 Embedding(mask_zero =True) 之间有区别吗?
【发布时间】:2018-01-18 19:22:46
【问题描述】:

嵌入层的文档在这里:

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

遮罩层的文档在这里:

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

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

【问题讨论】:

    标签: python tensorflow keras masking keras-layer


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 因此,使用嵌入层,我的序列中的时间步长将被忽略,无论它是否在所有序列中为零。例如,在每个序列时间步中,#3 应该被忽略而不是我使用嵌入层,如果只是零应该被忽略,无论它们在哪个时间步中使用掩蔽层?
    • 如果所有输入都等于您可以指定的某个值,则应忽略时间步长,然后使用使用掩码。如果零应该被忽略,(所以如果 1 输入零,其他输入值,时间步长仍然很强大),使用嵌入
    猜你喜欢
    • 2018-05-09
    • 2016-12-02
    • 2022-01-24
    • 2023-01-25
    • 2010-12-23
    • 2010-10-11
    • 2012-02-16
    • 2022-10-30
    • 2023-03-08
    相关资源
    最近更新 更多