logo

torch.nn a PyTorch

PyTorch proporciona el mòdul torch.nn per ajudar-nos a crear i entrenar la xarxa neuronal. Primer entrenarem la xarxa neuronal bàsica al conjunt de dades MNIST sense utilitzar cap característica d'aquests models. Utilitzarem només la funcionalitat bàsica del tensor de PyTorch i, a continuació, afegirem una funció cada vegada de torch.nn.

torch.nn ens ofereix moltes més classes i mòduls per implementar i entrenar la xarxa neuronal.

El paquet nn conté els mòduls i classes següents:

S.No Classe i mòdul Descripció
1. torch.nn.Parametre És un tipus de tensor que s'ha de considerar com un paràmetre de mòdul.
2. Contenidors
1) torxa.nn.Mòdul És una classe base per a tots els mòduls de xarxes neuronals.
2) torxa.nn.Seqüencial És un contenidor seqüencial en el qual s'afegiran mòduls en el mateix ordre en què es passen al constructor.
3) torch.nn.ModuleList Això inclourà els submòduls en una llista.
4) torxa.nn.ModuleDict Això conté submòduls en un directori.
5) torch.nn.ParameterList Això mantindrà els paràmetres en una llista.
6) torch.nn.parameterDict Això mantindrà els paràmetres en un directori.
3. Capes de convolució
1) torxa.nn.Conv1d Aquest paquet s'utilitzarà per aplicar una convolució 1D sobre un senyal d'entrada compost per diversos plans d'entrada.
2) torxa.nn.Conv2d Aquest paquet s'utilitzarà per aplicar una convolució 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
3) torch.nn.Conv3d Aquest paquet s'utilitzarà per aplicar una convolució 3D sobre un senyal d'entrada compost per diversos plans d'entrada.
4) torch.nn.ConvTranspose1d Aquest paquet s'utilitzarà per aplicar un operador de convolució transposat 1D sobre una imatge d'entrada composta per diversos plans d'entrada.
5) torch.nn.ConvTranspose2d Aquest paquet s'utilitzarà per aplicar un operador de convolució transposat 2D sobre una imatge d'entrada composta per diversos plans d'entrada.
6) torch.nn.ConvTranspose3d Aquest paquet s'utilitzarà per aplicar un operador de convolució transposat en 3D sobre una imatge d'entrada composta per diversos plans d'entrada.
7) torxa.nn.Desplegar S'utilitza per extreure blocs locals lliscants d'un tensor d'entrada per lots.
8) torxa.nn.Plega S'utilitza per combinar una matriu de blocs locals lliscants en un gran tensor que conté.
4. Agrupació de capes
1) torxa.nn.MaxPool1d S'utilitza per aplicar una agrupació màxima 1D sobre un senyal d'entrada compost per diversos plans d'entrada.
2) torxa.nn.MaxPool2d S'utilitza per aplicar una agrupació màxima 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
3) torxa.nn.MaxPool3d S'utilitza per aplicar una agrupació màxima 3D sobre un senyal d'entrada compost per diversos plans d'entrada.
4) torch.nn.MaxUnpool1d S'utilitza per calcular la inversa parcial de MaxPool1d.
5) torxa.nn.MaxUnpool2d S'utilitza per calcular la inversa parcial de MaxPool2d.
6) torch.nn.MaxUnpool3d S'utilitza per calcular la inversa parcial de MaxPool3d.
7) torch.nn.AvgPool1d S'utilitza per aplicar una agrupació mitjana 1D sobre un senyal d'entrada compost per diversos plans d'entrada.
8) torch.nn.AvgPool2d S'utilitza per aplicar una agrupació mitjana 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
9) torch.nn.AvgPool3d S'utilitza per aplicar una agrupació mitjana 3D sobre un senyal d'entrada compost per diversos plans d'entrada.
10) torxa.nn.FractionalMaxPool2d S'utilitza per aplicar una agrupació màxima fraccional 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
11) torxa.nn.LPPool1d S'utilitza per aplicar una agrupació de potència mitjana 1D sobre un senyal d'entrada compost per diversos plans d'entrada.
12) torxa.nn.LPPool2d S'utilitza per aplicar una agrupació de potència mitjana 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
13) torxa.nn.AdavtiveMaxPool1d S'utilitza per aplicar una agrupació màxima adaptativa 1D sobre un senyal d'entrada compost per diversos plans d'entrada.
14) torch.nn.AdavtiveMaxPool2d S'utilitza per aplicar una agrupació màxima adaptativa 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
15) torch.nn.AdavtiveMaxPool3d S'utilitza per aplicar una agrupació màxima adaptativa 3D sobre un senyal d'entrada compost per diversos plans d'entrada.
16) torch.nn.AdavtiveAvgPool1d S'utilitza per aplicar una agrupació mitjana adaptativa 1D sobre un senyal d'entrada compost per diversos plans d'entrada.
17) torch.nn.AdavtiveAvgPool2d S'utilitza per aplicar una agrupació mitjana adaptativa 2D sobre un senyal d'entrada compost per diversos plans d'entrada.
18) torch.nn.AdavtiveAvgPool3d S'utilitza per aplicar una agrupació mitjana adaptativa 3D sobre un senyal d'entrada compost per diversos plans d'entrada.
5. Capes de farciment
1) torxa.nn.ReflectionPad1d Rellenarà el tensor d'entrada utilitzant la reflexió del límit d'entrada.
2) torxa.nn.ReflactionPad2d Rellenarà el tensor d'entrada utilitzant la reflexió del límit d'entrada.
3) torxa.nn.ReplicationPad1 Rellenarà el tensor d'entrada mitjançant la replicació del límit d'entrada.
4) torch.nn.ReplicationPad2d Rellenarà el tensor d'entrada mitjançant la replicació del límit d'entrada.
5) torch.nn.ReplicationPad3d Rellenarà el tensor d'entrada mitjançant la replicació del límit d'entrada.
6) torxa.nn.ZeroPad2d Omplirà els límits del tensor d'entrada amb zero.
7) torxa.nn.ConstantPad1d Omplirà els límits del tensor d'entrada amb un valor constant.
8) torxa.nn.ConstantPad2d Omplirà els límits del tensor d'entrada amb un valor constant.
9) torch.nn.ConstantPad3d Omplirà els límits del tensor d'entrada amb un valor constant.
6. Activacions no lineals (suma ponderada, no linealitat)
1) torxa.nn.ELU S'utilitzarà per aplicar la funció d'elements:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) torxa.nn.Encongiment dur S'utilitzarà per aplicar la funció de contracció dura funció d'elements:
torch.nn a PyTorch
3) torxa.nn.LeakyReLU S'utilitzarà per aplicar la funció d'elements:
LeakyReLu(x)=max(0,x) +negative_slope*min(0,x)
4) torxa.nn.LogSigmoid S'utilitzarà per aplicar la funció d'elements:
torch.nn a PyTorch
5) torxa.nn.MultiheadAtenció S'utilitza per permetre que el model atengui informació de diferents subespais de representació
6) torxa.nn.PReLU S'utilitzarà per aplicar la funció per elements:
PReLU(x)=max(0,x)+a*min(0,x)
7) torxa.nn.ReLU S'utilitzarà per aplicar la funció d'unitat lineal rectificada per elements:
ReLU(x)=max(0,x)
8) torxa.nn.ReLU6 S'utilitzarà per aplicar la funció per elements:
ReLU6(x)=min(max(0,x),6)
9) torxa.nn.RReLU S'utilitzarà per aplicar la funció d'unitat lineal rectificada amb fuites aleatòries, per elements, tal com es descriu al document:
torch.nn a PyTorch
10) torxa.nn.SELU S'utilitzarà per aplicar la funció d'element com:
SELU(x)=escala*(màx(0,x)+ min(0,a*(exp(x)-1)))

Aquí α= 1,6732632423543772848170429916717 i escala = 1,0507009873554804934193349852946.
11) torxa.nn.TARGET S'utilitzarà per aplicar la funció d'element com:
torch.nn a PyTorch
12) torxa.nn.Sigmoide S'utilitzarà per aplicar la funció d'element com:
torch.nn a PyTorch
13) torxa.nn.Softplus S'utilitzarà per aplicar la funció d'element com:
torch.nn a PyTorch
14) torxa.nn.Encongiment suau S'utilitzarà per aplicar la funció de contracció suau per elements com:
torch.nn a PyTorch
15) torxa.nn.Softsign S'utilitzarà per aplicar la funció d'element com:
torch.nn a PyTorch
16) torxa.nn.Tanh S'utilitzarà per aplicar la funció d'element com:
torch.nn a PyTorch
17) torxa.nn.Tanhshrink S'utilitzarà per aplicar la funció d'element com:
Tanhshrink(x)=x-Tanh(x)
18) torxa.nn.Llindar S'utilitzarà per llindar cada element del Tensor d'entrada. El llindar es defineix com:
torch.nn a PyTorch
7. Activacions no lineals (altres)
1) torxa.nn.Softmin S'utilitza per aplicar la funció softmin a un tensor d'entrada n-dimensional per reescalar-los. Després d'això, els elements del Tensor de sortida n-dimensional es troben en el rang 0, 1 i suma a 1. Softmin es defineix com:
torch.nn a PyTorch
2) torxa.nn.Softmax S'utilitza per aplicar la funció softmax a un tensor d'entrada n-dimensional per reescalar-los. Després d'això, els elements del Tensor de sortida n-dimensional es troben en l'interval 0, 1 i suma a 1. Softmax es defineix com:
torch.nn a PyTorch
3) torxa.nn.Softmax2d S'utilitza per aplicar SoftMax sobre característiques a cada ubicació espacial.
4) torxa.nn.LogSoftmax S'utilitza per aplicar la funció LogSoftmax a un tensor d'entrada n-dimensional. La funció LofSoftmax es pot definir com:
torch.nn a PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss És una estratègia per formar models amb grans espais de sortida. És molt eficaç quan la distribució de l'etiqueta està molt desequilibrada
8. Capes de normalització
1) torxa.nn.BatchNorm1d S'utilitza per aplicar la normalització per lots sobre entrades 2D o 3D.
torch.nn a PyTorch
2) torxa.nn.BatchNorm2d S'utilitza per aplicar la normalització per lots sobre un 4D.
torch.nn a PyTorch
3) torch.nn.BatchNorm3d S'utilitza per aplicar la normalització per lots sobre entrades 5D.
torch.nn a PyTorch
4) torxa.nn.GroupNorm S'utilitza per aplicar la normalització de grup sobre un mini-lot d'entrades.
torch.nn a PyTorch
5) torch.nn.SyncBatchNorm S'utilitza per aplicar la normalització per lots sobre entrades n-dimensionals.
torch.nn a PyTorch
6) torch.nn.InstanceNorm1d S'utilitza per aplicar una normalització d'instància sobre una entrada 3D.
torch.nn a PyTorch
7) torch.nn.InstanceNorm2d S'utilitza per aplicar una normalització d'instàncies sobre una entrada 4D.
torch.nn a PyTorch
8) torch.nn.InstanceNorm3d S'utilitza per aplicar una normalització d'instància sobre una entrada 5D.
torch.nn a PyTorch
9) torxa.nn.LayerNorm S'utilitza per aplicar la normalització de capes sobre un mini-lot d'entrades.
torch.nn a PyTorch
10) torch.nn.LocalResponseNorm S'utilitza per aplicar la normalització de la resposta local sobre un senyal d'entrada que es compon de diversos plans d'entrada, on el canal ocupa la segona dimensió.
9. Capes recurrents
1) torxa.nn.RNN S'utilitza per aplicar una RNN Elman multicapa amb tanh o no linealitat ReLU a una seqüència d'entrada. Cada capa calcula la funció següent per a cada element de la seqüència d'entrada:
ht= tanh (Wellsxt+bells+Whhtt-1+bhh)
2) torxa.nn.LSTM S'utilitza per aplicar una RNN de memòria a llarg termini (LSTM) multicapa a una seqüència d'entrada. Cada capa calcula la funció següent per a cada element de la seqüència d'entrada:
torch.nn a PyTorch
3) torxa.nn.GRU S'utilitza per aplicar una RNN d'unitat recurrent amb gated multicapa (GRU) a una seqüència d'entrada. Cada capa calcula la funció següent per a cada element de la seqüència d'entrada:
torch.nn a PyTorch
4) torxa.nn.RNNCell S'utilitza per aplicar una cel·la RNN d'Elman amb no linealitat tanh o ReLU a una seqüència d'entrada. Cada capa calcula la funció següent per a cada element de la seqüència d'entrada:
h'=tanh(Wellsx+bells+Whhh+bhh)
ReLU s'utilitza en lloc de tanh
5) torxa.nn.LSTMCell S'utilitza per aplicar una cel·la de memòria a curt termini (LSTM) a una seqüència d'entrada. Cada capa calcula la funció següent per a cada element de la seqüència d'entrada:
torch.nn a PyTorch
On σ és la funció sigmoide i * és el producte de Hadamard.
6) torxa.nn.GRUCell S'utilitza per aplicar una cel·la d'unitat recurrent gated (GRU) a una seqüència d'entrada. Cada capa calcula la funció següent per a cada element de la seqüència d'entrada:
torch.nn a PyTorch
10. Capes lineals
1) torxa.nn.Identitat És un operador d'identitat de marcador de posició que no és sensible als arguments.
2) torxa.nn.Lineal S'utilitza per aplicar una transformació lineal a les dades entrants:
y=xAT+b
3) torxa.nn.Bilineal S'utilitza per aplicar una transformació bilineal a les dades entrants:
y=x1Destral2+b
11. Capes d'abandonament
1) torxa.nn.Dropout S'utilitza per regularitzar i prevenir la coadaptació de les neurones. Un factor de torch.nn a PyTorchdurant l'entrenament escala la sortida. Això significa que el mòdul calcula una funció d'identitat durant l'avaluació.
2) torxa.nn.Droout2d Si els píxels adjacents dels mapes de característiques estan correlacionats, torch.nn.Dropout no regularitzarà les activacions i disminuirà la taxa d'aprenentatge efectiva. En aquest cas, torch.nn.Dropout2d() s'utilitza per promoure la independència entre els mapes de característiques.
3) torxa.nn.Droout3d Si els píxels adjacents dels mapes de característiques estan correlacionats, torch.nn.Dropout no regularitzarà les activacions i disminuirà la taxa d'aprenentatge efectiva. En aquest cas, torch.nn.Dropout2d () s'utilitza per promoure la independència entre els mapes de característiques.
4) torxa.nn.AlphaDropout S'utilitza per aplicar Alpha Dropout sobre l'entrada. Alpha Dropout és un tipus de Dropout que manté la propietat d'autonormalització.
12. Capes escasses
1) torxa.nn.Incrustació S'utilitza per emmagatzemar paraules incrustades i recuperar-les mitjançant índexs. L'entrada del mòdul és una llista d'índexs i la sortida és la incrustació de paraules corresponent.
2) torxa.nn.EmbeddingBag S'utilitza per calcular sumes o mitjanes de 'bosses' d'incrustació sense instància de la incrustació intermèdia.
13. Funció de distància
1) torxa.nn.CosineSimilarity Tornarà la similitud del cosinus entre x1 i x2, calculada al llarg de dim.
torch.nn a PyTorch
2) torxa.nn.PairwiseDistance Calcula la distància per parelles per lots entre vectors v1, v2 utilitzant la norma p:
torch.nn a PyTorch
14. Funció de pèrdua
1) torxa.nn.L1 Pèrdua S'utilitza per a un criteri que mesura l'error absolut mitjà entre cada element de l'entrada x i l'objectiu y. La pèrdua no reduïda es pot descriure com:
l(x,y)=L={l1,...,ln}, ln=|xn-in|,
On N és la mida del lot.
2) torxa.nn.MSELss S'utilitza per a un criteri que mesura l'error quadrat mitjà entre cada element de l'entrada x i l'objectiu y. La pèrdua no reduïda es pot descriure com:
l(x,y)=L={l1,...,ln}, ln=(xn-in)2,
On N és la mida del lot.
3) torxa.nn.CrossEntropyLoss Aquest criteri combina nn.LogSoftmax() i nn.NLLLoss() en una sola classe. És útil quan entrenem un problema de classificació amb classes C.
4) torxa.nn.CTCLoss La pèrdua de classificació temporal connectionista calcula la pèrdua entre una sèrie temporal contínua i una seqüència objectiu.
5) torxa.nn.NLLLoss La pèrdua de probabilitat de registre negatiu s'utilitza per entrenar un problema de classificació amb classes C.
6) torxa.nn.PoissonNLLLoss La pèrdua de log-verabilitat negativa amb la distribució de Poisson de t
target~Poisson(input)loss(input,target)=input-target*log(target!)l'objectiu.
7) torch.nn.KLDivLoss És una mesura de distància útil per a la distribució contínua, i també és útil quan realitzem una regressió directa sobre l'espai de distribució de sortida contínua.
8) torxa.nn.BCELoss S'utilitza per crear un criteri que mesura l'entropia creuada binària entre l'objectiu i la sortida. La pèrdua no reduïda es pot descriure com:
l(x,y)=L={l1,...,ln}, ln=-vn[in*logxn+ (1-in)*log(1-xn)],
On N és la mida del lot.
9) torch.nn.BCEWithLogitsLoss Combina una capa Sigmoide i el BCELoss en una sola classe. Podem aprofitar el truc log-sum-exp per a l'estabilitat numèrica combinant l'operació en una sola capa.
10) torch.nn.MarginRankingLoss Crea un criteri que mesura la pèrdua de les entrades donades x1, x2, dos tensors de mini-lot 1D i una etiqueta tensor de mini-lot 1D y que contenen 1 o -1. La funció de pèrdua per a cada mostra del mini-lot és la següent:
pèrdua (x,y)=màx (0,-y*(x1-x2)+marge
11) torxa.nn.HingeEmbeddingLoss HingeEmbeddingLoss mesura la pèrdua d'un tensor d'entrada x i un tensor d'etiquetes y que contenen 1 o -1. S'utilitza per mesurar si dues entrades són semblants o diferents. La funció de pèrdua es defineix com:
torch.nn a PyTorch
12) torch.nn.MultiLabelMarginLoss S'utilitza per crear un criteri que optimitza una pèrdua de frontissa multiclassificació entre l'entrada x i la sortida y.
torch.nn a PyTorch
13) torxa.nn.SmoothL1Loss S'utilitza per crear un criteri que utilitza un terme quadrat si l'error absolut de l'element cau per sota d'1 i un terme L1 en cas contrari. També es coneix com a pèrdua de Huber:
torch.nn a PyTorch
14) torch.nn.SoftMarginLoss S'utilitza per crear un criteri que optimitza la pèrdua logística de classificació de dues classes entre el tensor d'entrada x i el tensor objectiu y que contenen 1 o -1.
torch.nn a PyTorch
15) torch.nn.MultiLabelSoftMarginLoss S'utilitza per crear un criteri que optimitza la pèrdua multi-etiqueta d'un contra tots en funció de l'entropia màxima entre l'entrada x i l'objectiu y de mida (N, C).
torch.nn a PyTorch
16) torxa.nn.CosineEmbeddingLoss S'utilitza per crear un criteri que mesura la pèrdua de tensors d'entrada donats x1, x2 i una etiqueta de tensor y amb valors 1 o -1. S'utilitza per mesurar si dues entrades són semblants o diferents, utilitzant la distància del cosinus.
torch.nn a PyTorch
17) torxa.nn.MultiMarginLoss S'utilitza per crear un criteri que optimitza una pèrdua de frontissa de classificació multiclasse entre l'entrada x i la sortida y.
torch.nn a PyTorch
18) torch.nn.TripletMarginLoss S'utilitza per crear un criteri que mesura la pèrdua de triplets dels tensors d'entrada x1, x2, x3 i un marge amb un valor superior a 0. S'utilitza per mesurar una semblança relativa entre mostres. Un triplet està format per un àncora, un exemple positiu i un exemple negatiu.
L(a,p,n)=max{d(ai, pàgi)-d(ai,ni)+marge,0}
15. Capes de visió
1) torch.nn.PixelShuffle S'utilitza per reordenar els elements en un tensor de forma(*,C×r2,H,W) a un tensor de forma (*,C,H×r,W,r)
2) torxa.nn.Upsample S'utilitza per mostrar una sèrie de dades 1D, 2D o 3D multicanal.
3) torch.nn.upsampling Nearest2d S'utilitza per aplicar el mostreig del veí més proper 2D a un senyal d'entrada que es compon de múltiples canals d'entrada.
4) torxa.nn.UpsamplingBilinear2d S'utilitza per aplicar un mostreig bilineal 2D a un senyal d'entrada que es compon d'un canal d'entrada múltiple.
16. Capes paral·leles de dades (multi-GPU, distribuïdes)
1) torch.nn.DataParallel S'utilitza per implementar el paral·lelisme de dades a nivell de mòdul.
2) torch.nn.DistributedDataParallel S'utilitza per implementar el paral·lelisme de dades distribuïdes, que es basa en el paquet torch.distributed a nivell de mòdul.
3) torch.nn.DistributedDataParallelCPU S'utilitza per implementar el paral·lelisme de dades distribuïdes per a la CPU a nivell de mòdul.
17. Utilitats
1) torch.nn.clip_grad_norm_ S'utilitza per retallar la norma de gradient d'un iterable de paràmetres.
2) torch.nn.clip_grad_value_ S'utilitza per retallar la norma de gradient d'un iterable de paràmetres al valor especificat.
3) torch.nn.parameters_to_vector S'utilitza per convertir paràmetres en un vector.
4) torch.nn.vector_to_parameters S'utilitza per convertir un vector als paràmetres.
5) torxa.nn.weight_norm S'utilitza per aplicar la normalització de pes a un paràmetre del mòdul donat.
6) torch.nn.remove_weight_norm S'utilitza per eliminar la normalització de pes i la re-parametrització d'un mòdul.
7) torxa.nn.norma_espectral S'utilitza per aplicar la normalització espectral a un paràmetre del mòdul donat.
8) torch.nn.PackedSequence S'utilitzarà per contenir les dades i la llista de mides de lots d'una seqüència empaquetada.
9) torch.nn.pack_padded_sequence S'utilitza per empaquetar un Tensor que conté seqüències encoixinades de longitud variable.
10) torch.nn.pad_packed_sequence S'utilitza per envasar un lot de seqüències de longitud variable.
11) torch.nn.pad_sequence S'utilitza per emplenar una llista de tensors de longitud variable amb valor de farciment.
12) torch.nn.pack_sequence S'utilitza per empaquetar una llista de tensors de longitud variable
13) torch.nn.remove_spectral_norm S'utilitza per eliminar la normalització espectral i la re-parametrització d'un mòdul.

Referència:

https://pytorch.org/docs/stable/nn.html