← Tous les exercices
La moyenne masquée
Partie 2 · ★★
Dans un paquet, chaque numéro reçoit un embedding, <rempl> compris. Diviser par la longueur du paquet compterait donc les remplissages comme des tokens : « fièvre » avec deux <rempl> donnerait [0,33 ; 0] au lieu de [1 ; 0].
On multiplie chaque embedding par son masque (1 vrai token, 0 remplissage), on additionne, puis on divise par la somme du masque, qui compte les vrais tokens. C'est ce que fait (vecteurs * poids).sum(dim=1) / poids.sum(dim=1) en PyTorch.
table = {0: [0, 0], 1: [0, 0], 2: [1, 0], 3: [0, 1], 4: [1, 1]} def moyenne_masquee(ids, masque): somme = [0, 0] for i, m in zip(ids, masque): somme = [s + e * ___ for s, e in zip(somme, table[i])] return [s / ___ for s in somme]
Ctrl/⌘+Entrée