keras 掩膜图层与MultiHeadAttention中的attention_mask参数

v2g6jxz6  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(647)

我在我的变压器模型中使用了MultiHeadAttention层(我的模型与命名实体识别模型非常相似)。因为我的数据具有不同的长度,所以我在MultiHeadAttention中使用了填充和attention_mask参数来屏蔽填充。如果我在MultiHeadAttention之前使用Masking层,它是否与attention_mask参数具有相同的效果?或者我应该同时使用两者:attention_mask层和Masking层之间的关系?

js4nwp54

js4nwp541#

Masking and padding with keras上的Tensoflow文档可能会有所帮助。
以下是该文件的摘录。
当使用功能API或顺序API时,由嵌入或掩蔽层生成的掩码将通过网络传播给任何能够使用它们的层(例如RNN层)。Keras将自动获取与输入对应的掩码,并将其传递给任何知道如何使用它的层。
MultiHeadAttention还支持TF2.10.0中的自动遮罩传播。
改进了对tf.keras.layers.MultiHeadAttention的遮罩支持。

  • 查询、键和值输入的隐式掩码将自动用于计算层的正确注意掩码。这些填充掩码将与调用层时直接传入的任何attention_mask组合。这可以与tf.keras.layers.Embedding with mask_zero=True一起使用,以自动推断正确的填充掩码。
  • 已将use_causal_mask调用时间参数添加到层。传递use_causal_mask=True将计算因果注意掩码,并可选择将其与调用层时直接传入的任何attention_mask组合。
6gpjuf90

6gpjuf902#

掩膜图层将保持输入矢量不变,并创建掩膜矢量,以便在后续图层需要掩膜矢量时传播到后续图层(像RNN层)。如果你实现了自己的模型,你可以使用它。如果你使用来自huggingFace的模型,你可以使用一个遮罩层例如如果你想保存遮罩矢量以备将来使用,如果不是遮罩操作已经内置,因此不需要在开始时添加任何掩模层。

相关问题