Modelare secvență în secvență cu fost și TorchText - Tutoriale PyTorch 1
Acesta este un tutorial despre cum să instruiți un model de secvență în secvență care utilizează modulul nn.Transformer.
Versiunea PyTorch 1.2 include un modul de transformare standard bazat pe hârtie. Atenție este tot ce aveți nevoie. Modelul transformatorului a fost implementat pentru a avea o calitate superioară pentru multe probleme de la secvență la secvență, fiind în același timp mai paralelizabil. Modulul nn.Transformer se bazează în întregime pe un mecanism de atenție (un alt modul implementat recent ca nn.MultiheadAttention) pentru a desena dependențe globale între intrare și ieșire. Modulul nn.Transformer este acum extrem de modularizat, astfel încât o singură componentă (cum ar fi nn.TransformerEncoder în acest tutorial) poate fi ușor adaptată/compusă.

Definiți modelul¶
În acest tutorial, instruim modelul nn.TransformerEncoder pe o sarcină de modelare a limbajului. Sarcina de modelare a limbajului este de a atribui probabilitatea ca un anumit cuvânt (sau o secvență de cuvinte) să urmeze o succesiune de cuvinte. O secvență de jetoane sunt transmise mai întâi stratului de încorporare, urmat de un strat de codare pozițională pentru a ține cont de ordinea cuvântului (consultați paragraful următor pentru mai multe detalii). Nn.TransformerEncoder este format din mai multe straturi de nn.TransformerEncoderLayer. Împreună cu secvența de intrare, este necesară o mască pătrată de atenție, deoarece straturile de auto-atenție din nn.TransformerEncoder au permisiunea de a participa doar la pozițiile anterioare din secvență. Pentru sarcina de modelare a limbajului, orice jetoane de pe pozițiile viitoare ar trebui să fie mascate. Pentru a avea cuvintele reale, ieșirea modelului nn.TransformerEncoder este trimisă la nivelul liniar final, care este urmat de o funcție log-Softmax.