padding_idx:固定一行
只让指定 padding 行不参与梯度更新;其他被访问的普通词行仍可学习。
补零能把序列对齐,却不应偷偷改变句子的表示。先比较两种平均方式,再进入嵌入表,观察 padding_idx 到底固定了什么。
学习率固定为 0.1。批次访问了 <PAD> 和“电影”,但没有访问“天气”。
| 嵌入行 | 训练前 | 本步梯度 | 训练后 | 解释 |
|---|
尚未训练。启用 padding_idx 时,padding 行的梯度会被固定为 0。
padding_idx:固定一行只让指定 padding 行不参与梯度更新;其他被访问的普通词行仍可学习。
freeze=True:冻结整张表整个嵌入权重都不更新。它不是“只固定 padding 行”的同义写法。
sparse=True:改变梯度存储权重梯度改用稀疏形式,只记录被访问行;Embedding 的前向输出依旧是普通的稠密张量。