Pomôžte rozvoju stránky a zdieľajte článok s priateľmi!

Úvod do vkladania PyTorch

PyTorch Embedding je priestor s nízkymi rozmermi, kde sa dajú ľahko preložiť vysokorozmerné vektory, takže modely sa dajú znova použiť na nové problémy a dajú sa ľahko vyriešiť. Zmeny sa zachovajú v každom jednotlivom snímku videa, takže údaje možno ľahko skryť v snímkach videa, kedykoľvek dôjde k zmenám. Prvým krokom je však rozhodnúť, či chceme dáta skryť, alebo ich potrebujeme extrahovať z video snímok.

Čo je vkladanie PyTorch?

  • Vrstva na vkladanie musí byť vytvorená tam, kde je tenzor inicializovaný na základe požiadaviek.
  • Teraz, keď model trénujeme, nájde podobnosti medzi slovami alebo číslami a poskytne nám výsledky.
  • Ak je model predtrénovaný iným príkladom, potom nám poskytne výsledky z oboch modelov.
  • Po vloženej vrstve je potrebné definovať slovnú zásobu a túto inštanciu možno použiť na načítanie správneho vloženia vrstiev.

Ako funguje vkladanie PyTorch?

  • Vrstvu vkladania môžeme nazvať lineárnou vrstvou, kde je vrstva definovaná týmto spôsobom nn.lineárna (počet slov, rozmerové vektory). Slová vo vrstve teda opisujú vektor veľkosti 1000 s 1 v normálnej polohe. Ak ide o vektor s v(2)=1, dostaneme 2. riadok vrstvy v rovnakom experimente. Tu vkladanie popisuje vektory a vrstvy v slovnej zásobe slov.Môžeme zadať index bez uvedenia celého vektora, kde index opisuje polohu prvého vektora v experimente.
  • Vstupy forward pass() majú zoznam indexov so slovami. Nie sú tu zahrnuté žiadne dávky, a preto je to vždy jeden index mapovaný na jedno slovo. To nám pomáha používať lineárne namiesto vkladania ako nn.linear(). Treba poznamenať, že pri použití nn.linear, vstupy nemusia byť horúce vektory, pretože to môžu byť akékoľvek slová, ktoré je možné mapovať pomocou indexov. Neexistuje žiadna základná architektúra s vložením, pretože sa vždy považuje za vrstvu a väčšinou je to lineárna vrstva. Slovo sa vždy zhoduje s vektorom, a preto ho môžeme nazvať maticou M X N, kde M zodpovedá slovám a N vektoru. Takže medzi slovami a vektormi existuje vzájomná zhoda.
  • Prvá vrstva je väčšinou lineárna vrstva, kde môžeme ľahko zmenšiť rozmery. Tu nie je potrebná jedna zakódovaná matica tam, kde potrebujeme iba indexy slov.Preto sa NLP vždy zaoberá vloženými vrstvami, čo má veľký význam. Tu môžeme vynásobiť jeden horúci vektor s vloženou maticou, ktorá umožňuje vyhľadať problém. Spätná propagácia je tiež dobre vykonaná s maticou vkladania.

Použitie vkladania PyTorch

  • To nám pomáha previesť každé slovo prítomné v matici na vektor so správne definovanou veľkosťou. Budeme mať výsledok, kde sú vo vektore iba 0 a 1. To nám pomáha reprezentovať vektory rozmermi, kde slová pomáhajú zmenšovať rozmery vektora.
  • Môžeme povedať, že vrstva vkladania funguje ako vyhľadávacia tabuľka, kde sa každé slovo konvertuje na čísla a tieto čísla možno použiť na zostavenie tabuľky. Kľúče sú teda reprezentované slovami a hodnoty sú slovné vektory.
  • V NLP je vkladanie veľmi užitočné pri zmenšovaní rozmerov, aby sme mohli kontrolovať počet funkcií v kódovaní. Pomáha to znížiť počet riadkov v kóde, a preto výsledky získavame rýchlejšie ako s väčším počtom funkcií a menšou presnosťou.
  • Ďalším využitím vkladania je to, že spája slová s kontextmi. Pomáha to pri spájaní slov s podobným významom s podobnými kontextami, čím sa znižuje práca súvisiaca s celými slovami, aby sa spojili s kontextmi.
  • Keď máme veľké vstupy do strojového učenia, je ťažké zvládnuť to isté, pretože počet slov bude väčší a bude ťažké zvládnuť slová a súvisiace kontexty. Vkladanie tu pomáha spájať slová s indexmi, a preto sú slová redukované na čísla. Potom sú spojené s kontextami a teraz je celý vstupný tok zredukovaný na niekoľko kontextov a menší počet slov.

Parametre vkladania PyTorch

Nižšie sú uvedené parametre vkladania PyTorch:

  • Num_embeddings: Toto predstavuje veľkosť slovníka prítomného vo vložených položkách a je vyjadrená v celých číslach.
  • Embedding_dim: Toto predstavuje veľkosť každého vektora prítomného vo vložení, ktorý je reprezentovaný celými číslami.
  • Max_norm: Toto je voliteľný parameter, ktorý je reprezentovaný pohyblivou čiarou. Každé vloženie prechádza cez tento parameter, pričom ak je väčšie ako max_norm, je renormalizované tak, aby vytvorilo vloženie.
  • Scale_grad_by_freq: Toto je voliteľný parameter s boolovskými hodnotami, ktorý pomôže škálovať gradienty s inverznou frekvenciou slov prítomných v dávke.

Príklad vkladania PyTorch

Nižšie je uvedený príklad vkladania PyTorch:

Kód:

import torch
importovať torch.nn ako nn
import torch.nn.functional as Fun
importovať torch.optim ako opt
torch.manual_seed(2)
"word_conversion={hej: 0, tam: 1
"embeddings=nn.Embedding(2, 3)
"lookup=torch.tensor((word_conversion(hey)), dtype=torch.long)
"hej_embeddings=embeddings(lookup)
print(hey_embeddings)
n, d, m=2, 4, 6
embeddings=nn.Embedding(n, d, max_norm=True)
Hmotnosť=torch.randn((m, d), required_grad=True)
index=torch.tensor((1, 3))
x=embedding.weight.clone() @ Weight.t()
y=vloženie (index) @ Hmotnosť.t()
výstup=(x.unsqueeze(1) + y.unsqueeze(2))
stratový_faktor=output.sigmoid().prod()
loss_factor.backward()
class NewModel(nn.Module):
def __init__(self, embed_size, embed_dimension):
super(NewModel, self).__init__()
self.embed_size=embed_size
self.embed_dimension=embed_dimension
self.u_embeddings=nn.Embedding(veľkosť_embed, embed_dimension, sparse=True)
self.v_embeddings=nn.Embedding(veľkosť_embed, embed_dimension, sparse=True)
self.init_embed()
def init_embed(self):
initrange=0,75 / self.embed_dimension
self.u_embeddings.weight.data.uniform_(-initrange, initrange)
self.v_embeddings.weight.data.uniform_(-0, 0)
def forward(self, pos_u, pos_v, neg_v):
embed_u=self.u_embeddings(pos_u)
embed_v=self.v_embeddings(pos_v)
skóre=torch.mul(embed_u, embed_v).squeeze()
skóre=pochodeň.súčet(skóre, slabé=1)
skóre=F.logsigmoid(skóre)
neg_embed_v=self.v_embeddings(neg_v)
negtv_score=torch.bmm(neg_embed_v, embed_u.unsqueeze(2)).squeeze()
negtv_score=F.logsigmoid(-1negtv_score)
návrat -1(torch.sum(skóre)+torch.sum(negtv_score))

Záver

Vkladanie pomáha spájať slová s číslami, čím sa znižuje polovica práce v súvislosti s NLP a strojovým učením. Je však dôležité všímať si rozmery a spravovať slová tak, aby boli správne indexované a spravované.

Pomôžte rozvoju stránky a zdieľajte článok s priateľmi!