【发布时间】:2020-08-03 14:59:09
【问题描述】:
这个transformer教程https://www.tensorflow.org/tutorials/text/transformer中mask的使用好像和keras中正常使用mask的方式不一致。
它以这种方式创建掩码:“掩码指示填充值 0 存在的位置:它在这些位置输出 1,否则输出 0。”即,当值 = 0 时,掩码 = 1。
在这个关于掩码https://keras.io/guides/understanding_masking_and_padding/ 的 keras 文档中,它说:“每个单独的 False 条目表示在处理过程中应该忽略相应的时间步长。”即,当 value = 0 时 mask = 0。这与转换器教程所说的相反。
我想确认转换器教程有效。
我的理解是:
- 默认情况下,创建 tf.keras.layers.Embedding 时 mask_zero=False,因此 Embedding 层不会自行创建蒙版。
- transformer 教程中显式创建的遮罩被传递到 MultiHeadAttention 等层,这些层了解遮罩的创建方式。
所以变压器教程有效。我说的对吗?
谢谢。
【问题讨论】:
-
是的,在转换器中创建的掩码称为
attention_mask& 用于进行预测。 Transformer 中的注意力掩码也是特定于任务的。此外,它们因使用的变压器模型类型而异。
标签: tensorflow keras