Closed battleman123 closed 3 years ago
encoder的attention要添加什么mask?
最近在拿着huggingface中的mt5加载bert4keras训练出来的权值继续训练,发现同样的输入,两个模型的最后一层输出是不一样的,对照了下代码,发现bert4keras中额t5.1.1encoder没有mask(mask指https://github.com/huggingface/transformers/blob/master/src/transformers/models/t5/modeling_t5.py 第502,503行),还有一个huggingface中没有Decoder-output-scale这个缩放操作。不知道是否有这个区别?
可以拿下面两条文本试一下,只改变第二行的文本长度,第一行的encoder的输出就不一样,这个应该是动态的pad到一个batch中最长的文本,两个文件中第二行的长度不一样,pad的长度也不一样,在算attention时没有mask,计算出来的值也不一样,不知道这样解释合理不?
@@@@前是source,后后target 文件1 嗨美女,吃饭了吗?@@@@滚 嗨美女,吃饭了吗?嗨美女,吃饭了吗?@@@@滚
文件2 嗨美女,吃饭了吗?@@@@滚 嗨美女,吃饭了吗?嗨美女!@@@@滚
不好意思,是我测试不周了,确实有这个问题。已经尝试修复 https://github.com/bojone/bert4keras/commit/184f10df96f78d89dc7bc2f346798955ef3df9a1
欢迎重新测试
T5 encoder中的self attention是不是没有添加MASK?