logo

torch.nn in PyTorch

PyTorch fornisce il modulo torch.nn per aiutarci nella creazione e nell'addestramento della rete neurale. Per prima cosa addestreremo la rete neurale di base sul set di dati MNIST senza utilizzare alcuna funzionalità di questi modelli. Utilizzeremo solo la funzionalità di base del tensore PyTorch e quindi aggiungeremo in modo incrementale una funzionalità da torch.nn alla volta.

torch.nn ci fornisce molte più classi e moduli per implementare e addestrare la rete neurale.

Il pacchetto nn contiene i seguenti moduli e classi:

Si No Classe e modulo Descrizione
1. torcia.nn.Parametro È un tipo di tensore da considerare come parametro del modulo.
2. Contenitori
1) torcia.nn.Modulo È una classe base per tutti i moduli di rete neurale.
2) torcia.nn.Sequenziale È un contenitore sequenziale in cui i moduli verranno aggiunti nello stesso ordine in cui vengono passati al costruttore.
3) torcia.nn.ModuleList Ciò manterrà i sottomoduli in un elenco.
4) torcia.nn.ModuleDict Ciò manterrà i sottomoduli in una directory.
5) torcia.nn.ParameterList Ciò manterrà i parametri in un elenco.
6) torcia.nn.parametroDict Ciò manterrà i parametri in una directory.
3. Strati di convoluzione
1) torcia.nn.Conv1d Questo pacchetto verrà utilizzato per applicare una convoluzione 1D su un segnale di ingresso composto da diversi piani di ingresso.
2) torcia.nn.Conv2d Questo pacchetto verrà utilizzato per applicare una convoluzione 2D su un segnale di ingresso composto da diversi piani di ingresso.
3) torcia.nn.Conv3d Questo pacchetto verrà utilizzato per applicare una convoluzione 3D su un segnale di ingresso composto da diversi piani di ingresso.
4) torch.nn.ConvTranspose1d Questo pacchetto verrà utilizzato per applicare un operatore di convoluzione trasposto 1D su un'immagine di input composta da diversi piani di input.
5) torch.nn.ConvTranspose2d Questo pacchetto verrà utilizzato per applicare un operatore di convoluzione trasposto 2D su un'immagine di input composta da diversi piani di input.
6) torcia.nn.ConvTranspose3d Questo pacchetto verrà utilizzato per applicare un operatore di convoluzione trasposto 3D su un'immagine di input composta da diversi piani di input.
7) torcia.nn.Spiegare Viene utilizzato per estrarre blocchi locali scorrevoli da un tensore di input batch.
8) torcia.nn.Piega Viene utilizzato per combinare una serie di blocchi locali scorrevoli in un grande tensore contenente.
4. Strati di raggruppamento
1) torcia.nn.MaxPool1d Viene utilizzato per applicare un pooling massimo 1D su un segnale di ingresso composto da diversi piani di ingresso.
2) torcia.nn.MaxPool2d Viene utilizzato per applicare un pooling massimo 2D su un segnale di ingresso composto da diversi piani di ingresso.
3) torcia.nn.MaxPool3d Viene utilizzato per applicare un pooling 3D massimo su un segnale di ingresso composto da diversi piani di ingresso.
4) torcia.nn.MaxUnpool1d Viene utilizzato per calcolare l'inverso parziale di MaxPool1d.
5) torcia.nn.MaxUnpool2d Viene utilizzato per calcolare l'inverso parziale di MaxPool2d.
6) torcia.nn.MaxUnpool3d Viene utilizzato per calcolare l'inverso parziale di MaxPool3d.
7) torcia.nn.AvgPool1d Viene utilizzato per applicare un pooling medio 1D su un segnale di ingresso composto da diversi piani di ingresso.
8) torcia.nn.AvgPool2d Viene utilizzato per applicare un pooling medio 2D su un segnale di ingresso composto da diversi piani di ingresso.
9) torcia.nn.AvgPool3d Viene utilizzato per applicare un pooling medio 3D su un segnale di ingresso composto da diversi piani di ingresso.
10) torcia.nn.FractionalMaxPool2d Viene utilizzato per applicare un pool massimo frazionario 2D su un segnale di ingresso composto da diversi piani di ingresso.
11) torcia.nn.LPPool1d Viene utilizzato per applicare un pooling medio di potenza 1D su un segnale di ingresso composto da diversi piani di ingresso.
12) torcia.nn.LPPool2d Viene utilizzato per applicare un pooling della potenza media 2D su un segnale di ingresso composto da diversi piani di ingresso.
13) torch.nn.AdavtiveMaxPool1d Viene utilizzato per applicare un pooling massimo adattivo 1D su un segnale di ingresso composto da diversi piani di ingresso.
14) torch.nn.AdavtiveMaxPool2d Viene utilizzato per applicare un pooling massimo adattivo 2D su un segnale di ingresso composto da diversi piani di ingresso.
15) torch.nn.AdavtiveMaxPool3d Viene utilizzato per applicare un pooling massimo adattivo 3D su un segnale di ingresso composto da diversi piani di ingresso.
16) torch.nn.AdavtiveAvgPool1d Viene utilizzato per applicare un pool medio adattivo 1D su un segnale di ingresso composto da diversi piani di ingresso.
17) torch.nn.AdavtiveAvgPool2d Viene utilizzato per applicare un pool medio adattivo 2D su un segnale di ingresso composto da diversi piani di ingresso.
18) torch.nn.AdavtiveAvgPool3d Viene utilizzato per applicare un pool medio adattivo 3D su un segnale di ingresso composto da diversi piani di ingresso.
5. Strati di imbottitura
1) torcia.nn.ReflectionPad1d Riempirà il tensore di input utilizzando la riflessione del confine di input.
2) torcia.nn.ReflactionPad2d Riempirà il tensore di input utilizzando la riflessione del confine di input.
3) torcia.nn.ReplicationPad1 Riempirà il tensore di input utilizzando la replica del confine di input.
4) torcia.nn.ReplicationPad2d Riempirà il tensore di input utilizzando la replica del confine di input.
5) torcia.nn.ReplicationPad3d Riempirà il tensore di input utilizzando la replica del confine di input.
6) torcia.nn.ZeroPad2d Riempirà i confini del tensore di input con zero.
7) torcia.nn.ConstantPad1d Riempirà i confini del tensore di input con un valore costante.
8) torcia.nn.ConstantPad2d Riempirà i confini del tensore di input con un valore costante.
9) torcia.nn.ConstantPad3d Riempirà i confini del tensore di input con un valore costante.
6. Attivazioni non lineari (somma ponderata, non linearità)
1) torcia.nn.ELU Utilizzerà per applicare la funzione elemento-saggio:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) torcia.nn.Hardshrink Verrà utilizzato per applicare la funzione di contrazione dura per elemento:
torch.nn in PyTorch
3) torcia.nn.LeakyReLU Utilizzerà per applicare la funzione elemento-saggio:
LeakyReLu(x)=max(0,x) +pendenza_negativa*min(0,x)
4) torch.nn.LogSigmoid Utilizzerà per applicare la funzione elemento-saggio:
torch.nn in PyTorch
5) torch.nn.MultiheadAttention Viene utilizzato per consentire al modello di occuparsi delle informazioni provenienti da diversi sottospazi di rappresentazione
6) torcia.nn.PReLU Verrà utilizzato per applicare la funzione elemento-saggio:
PReLU(x)=max(0,x)+a*min(0,x)
7) torcia.nn.ReLU Utilizzerà per applicare la funzione dell'unità lineare rettificata per elemento:
ReLU(x)=max(0,x)
8) torcia.nn.ReLU6 Verrà utilizzato per applicare la funzione elemento-saggio:
ReLU6(x)=min(max(0,x),6)
9) torcia.nn.RReLU Verrà utilizzato per applicare la funzione dell'unità lineare rettificata con perdita casuale, per elemento, come descritto nel documento:
torch.nn in PyTorch
10) torcia.nn.SELU Utilizzerà per applicare la funzione elemento-saggio come:
SELU(x)=scala*(max(0,x)+ min(0,a*(exp(x)-1)))

Qui α= 1.6732632423543772848170429916717 e scala = 1.0507009873554804934193349852946.
11) torcia.nn.TARGET Utilizzerà per applicare la funzione elemento-saggio come:
torch.nn in PyTorch
12) torcia.nn.Sigma Utilizzerà per applicare la funzione elemento-saggio come:
torch.nn in PyTorch
13) torcia.nn.Softplus Utilizzerà per applicare la funzione elemento-saggio come:
torch.nn in PyTorch
14) torcia.nn.Restringimento morbido Verrà utilizzato per applicare la funzione di ritiro graduale in modo elementare come:
torch.nn in PyTorch
15) torcia.nn.Softsign Utilizzerà per applicare la funzione elemento-saggio come:
torch.nn in PyTorch
16) torcia.nn.Tanh Utilizzerà per applicare la funzione elemento-saggio come:
torch.nn in PyTorch
17) torcia.nn.Tanhshrink Utilizzerà per applicare la funzione elemento-saggio come:
Tanhrestringimento(x)=x-Tanh(x)
18) torcia.nn.Soglia Utilizzerà le soglie di ciascun elemento del tensore di input. La soglia è definita come:
torch.nn in PyTorch
7. Attivazioni non lineari (altro)
1) torcia.nn.Softmin Viene utilizzato per applicare la funzione softmin a un tensore di input n-dimensionale per ridimensionarli. Successivamente, gli elementi del tensore di output n-dimensionale rientrano nell'intervallo 0, 1 e la somma è 1. Softmin è definito come:
torch.nn in PyTorch
2) torcia.nn.Softmax Viene utilizzato per applicare la funzione softmax a un tensore di input n-dimensionale per ridimensionarli. Successivamente, gli elementi del tensore di output n-dimensionale rientrano nell'intervallo 0, 1 e si sommano a 1. Softmax è definito come:
torch.nn in PyTorch
3) torcia.nn.Softmax2d Viene utilizzato per applicare SoftMax sulle funzionalità a ciascuna posizione spaziale.
4) torcia.nn.LogSoftmax Viene utilizzato per applicare la funzione LogSoftmax a un tensore di input n-dimensionale. La funzione LofSoftmax può essere definita come:
torch.nn in PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss È una strategia per addestrare modelli con ampi spazi di output. È molto efficace quando la distribuzione delle etichette è molto sbilanciata
8. Strati di normalizzazione
1) torcia.nn.BatchNorm1d Viene utilizzato per applicare la normalizzazione batch su input 2D o 3D.
torch.nn in PyTorch
2) torcia.nn.BatchNorm2d Viene utilizzato per applicare la normalizzazione batch su un 4D.
torch.nn in PyTorch
3) torcia.nn.BatchNorm3d Viene utilizzato per applicare la normalizzazione batch sugli input 5D.
torch.nn in PyTorch
4) torch.nn.GroupNorm Viene utilizzato per applicare la normalizzazione di gruppo su un mini-batch di input.
torch.nn in PyTorch
5) torcia.nn.SyncBatchNorm Viene utilizzato per applicare la normalizzazione batch su input n-dimensionali.
torch.nn in PyTorch
6) torch.nn.InstanceNorm1d Viene utilizzato per applicare una normalizzazione dell'istanza su un input 3D.
torch.nn in PyTorch
7) torch.nn.InstanceNorm2d Viene utilizzato per applicare una normalizzazione dell'istanza su un input 4D.
torch.nn in PyTorch
8) torcia.nn.InstanceNorm3d Viene utilizzato per applicare una normalizzazione dell'istanza su un input 5D.
torch.nn in PyTorch
9) torcia.nn.LayerNorm Viene utilizzato per applicare la normalizzazione dei livelli su un mini-batch di input.
torch.nn in PyTorch
10) torch.nn.LocalResponseNorm Viene utilizzato per applicare la normalizzazione della risposta locale su un segnale di ingresso composto da diversi piani di ingresso, dove il canale occupa la seconda dimensione.
9. Strati ricorrenti
1) torcia.nn.RNN Viene utilizzato per applicare un Elman RNN multistrato con non linearità tanh o ReLU a una sequenza di input. Ciascun livello calcola la seguente funzione per ciascun elemento nella sequenza di input:
HT=tanh(WloroXT+bloro+WehTt-1+beh)
2) torcia.nn.LSTM Viene utilizzato per applicare una RNN di memoria a breve termine multistrato (LSTM) a una sequenza di input. Ciascun livello calcola la seguente funzione per ciascun elemento nella sequenza di input:
torch.nn in PyTorch
3) torcia.nn.GRU Viene utilizzato per applicare un RNN di unità ricorrente con gate multistrato (GRU) a una sequenza di input. Ciascun livello calcola la seguente funzione per ciascun elemento nella sequenza di input:
torch.nn in PyTorch
4) torcia.nn.RNNCell Viene utilizzato per applicare una cella Elman RNN con non linearità tanh o ReLU a una sequenza di input. Ciascun livello calcola la seguente funzione per ciascun elemento nella sequenza di input:
h'=tanh(Wlorox+bloro+Wehh+beh)
ReLU viene utilizzato al posto di tanh
5) torcia.nn.LSTMCell Viene utilizzato per applicare una cella di memoria a lungo termine (LSTM) a una sequenza di input. Ciascun livello calcola la seguente funzione per ciascun elemento nella sequenza di input:
torch.nn in PyTorch
Dove σ è la funzione sigmoidea e * è il prodotto di Hadamard.
6) torcia.nn.GRUCell Viene utilizzato per applicare una cella GRU (Gating Recurrent Unit) a una sequenza di input. Ciascun livello calcola la seguente funzione per ciascun elemento nella sequenza di input:
torch.nn in PyTorch
10. Strati lineari
1) torcia.nn.Identità È un operatore di identità segnaposto che non fa distinzione tra argomenti.
2) torcia.nn.Lineare Viene utilizzato per applicare una trasformazione lineare ai dati in ingresso:
y=xAT+b
3) torcia.nn.Bilineare Viene utilizzato per applicare una trasformazione bilineare ai dati in ingresso:
y=x1Ascia2+b
undici. Strati di eliminazione
1) torcia.nn.Dropout Viene utilizzato per la regolarizzazione e la prevenzione del coadattamento dei neuroni. Un fattore di torch.nn in PyTorchdurante l'allenamento ridimensiona l'output. Ciò significa che il modulo calcola una funzione di identità durante la valutazione.
2) torcia.nn.Dropout2d Se i pixel adiacenti all'interno delle mappe delle caratteristiche sono correlati, torch.nn.Dropout non regolarizzerà le attivazioni e ridurrà il tasso di apprendimento effettivo. In questo caso, torch.nn.Dropout2d() viene utilizzato per promuovere l'indipendenza tra le mappe delle caratteristiche.
3) torcia.nn.Dropout3d Se i pixel adiacenti all'interno delle mappe delle caratteristiche sono correlati, torch.nn.Dropout non regolarizzerà le attivazioni e ridurrà il tasso di apprendimento effettivo. In questo caso, torch.nn.Dropout2d () viene utilizzato per promuovere l'indipendenza tra le mappe delle caratteristiche.
4) torch.nn.AlphaDropout Viene utilizzato per applicare Alpha Dropout sull'input. Alpha Dropout è un tipo di Dropout che mantiene la proprietà autonormalizzante.
12. Strati sparsi
1) torcia.nn.Incorporamento Viene utilizzato per memorizzare gli incorporamenti di parole e recuperarli utilizzando gli indici. L'input per il modulo è un elenco di indici e l'output è l'incorporamento di parole corrispondente.
2) torch.nn.EmbeddingBag Viene utilizzato per calcolare le somme o la media dei 'sacchetti' di incorporamento senza istanziare l'incorporamento intermedio.
13. Funzione Distanza
1) torch.nn.CosineSimilarity Restituirà la somiglianza del coseno tra x1 e x2, calcolata lungo dim.
torch.nn in PyTorch
2) torcia.nn.PairwiseDistance Calcola la distanza a coppie in batch tra i vettori v1, v2 utilizzando la norma p:
torch.nn in PyTorch
14. Funzione di perdita
1) torcia.nn.L1Perdita Viene utilizzato per un criterio che misura l'errore medio assoluto tra ciascun elemento nell'input x e l'obiettivo y. La perdita non ridotta può essere descritta come:
l(x,y)=L={l1,...,lN},lN=|xN-EN|,
Dove N è la dimensione del batch.
2) torcia.nn.MSELoss Viene utilizzato per un criterio che misura l'errore quadratico medio tra ciascun elemento nell'input x e l'obiettivo y. La perdita non ridotta può essere descritta come:
l(x,y)=L={l1,...,lN},lN=(xN-EN)2,
Dove N è la dimensione del batch.
3) torch.nn.CrossEntropyLoss Questo criterio combina nn.LogSoftmax() e nn.NLLLoss() in un'unica classe. È utile quando addestriamo un problema di classificazione con le classi C.
4) torcia.nn.CTCLoss La perdita di classificazione temporale connessionista calcola la perdita tra una serie temporale continua e una sequenza target.
5) torch.nn.NLLLoss La perdita di log-verosimiglianza negativa viene utilizzata per addestrare un problema di classificazione con classi C.
6) torch.nn.PoissonNLLLoss La perdita di verosimiglianza negativa con la distribuzione di Poisson di t
target~Poisson(input)loss(input,target)=input-target*log(target!)il target.
7) torcia.nn.KLDivLoss È una misura di distanza utile per la distribuzione continua ed è utile anche quando eseguiamo una regressione diretta sullo spazio della distribuzione continua dell'output.
8) torcia.nn.BCEloss Viene utilizzato per creare un criterio che misura l'entropia incrociata binaria tra il target e l'output. La perdita non ridotta può essere descritta come:
l(x,y)=L={l1,...,lN},lN=-vN[EN*logxN+ (1 annoN)*log(1-xN)],
Dove N è la dimensione del batch.
9) torch.nn.BCEWithLogitsLoss Combina uno strato Sigmoid e BCELoss in un'unica classe. Possiamo sfruttare il trucco log-sum-exp per la stabilità numerica combinando l'operazione in un unico livello.
10) torch.nn.MarginRankingLoss Crea un criterio che misura la perdita di determinati input x1, x2, due tensori mini-batch 1D e un'etichetta tensore mini-batch 1D y che contiene 1 o -1. La funzione di perdita per ciascun campione nel mini-batch è la seguente:
perdita(x,y)=max(0,-y*(x1-X2)+margine
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss misura la perdita di un tensore di input x e di un tensore di etichette y che contengono 1 o -1. Viene utilizzato per misurare se due input sono simili o dissimili. La funzione di perdita è definita come:
torch.nn in PyTorch
12) torch.nn.MultiLabelMarginLoss Viene utilizzato per creare un criterio che ottimizzi una perdita di cerniera multiclassificazione multiclasse tra l'input x e l'output y.
torch.nn in PyTorch
13) torcia.nn.SmoothL1Loss Viene utilizzato per creare un criterio che utilizza un termine al quadrato se l'errore assoluto per elemento scende al di sotto di 1 e un termine L1 altrimenti. È nota anche come perdita di Huber:
torch.nn in PyTorch
14) torch.nn.SoftMarginLoss Viene utilizzato per creare un criterio che ottimizza la perdita logistica della classificazione a due classi tra il tensore di input x e il tensore di destinazione y che contengono 1 o -1.
torch.nn in PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Viene utilizzato per creare un criterio che ottimizza la perdita uno contro tutti multietichetta basata sull'entropia massima tra l'input x e il target y di dimensione (N, C).
torch.nn in PyTorch
16) torch.nn.CosineEmbeddingLoss Viene utilizzato per creare un criterio che misura la perdita di determinati tensori di input x1, x2 e un'etichetta tensore y con valori 1 o -1. Viene utilizzato per misurare se due input sono simili o dissimili, utilizzando la distanza coseno.
torch.nn in PyTorch
17) torch.nn.MultiMarginLoss Viene utilizzato per creare un criterio che ottimizzi una perdita di cerniera di classificazione multiclasse tra l'input x e l'output y.
torch.nn in PyTorch
18) torch.nn.TripletMarginLoss Viene utilizzato per creare un criterio che misura la perdita di tripletta di un dato tensore di input x1, x2, x3 e un margine con un valore maggiore di 0. Viene utilizzato per misurare una somiglianza relativa tra i campioni. Una tripletta è composta da un'ancora, un esempio positivo e un esempio negativo.
L(a,p,n)=massimo{d(aio,Pio)-d(aio,Nio)+margine,0}
quindici. Strati di visione
1) torcia.nn.PixelShuffle Viene utilizzato per riorganizzare gli elementi in un tensore di forma(*,C×r2,H,W) ad un tensore di forma (*,C,H×r,W,r)
2) torcia.nn.Upsample Viene utilizzato per sovracampionare dati 1D, 2D o 3D multicanale.
3) torch.nn.upsamplingNearest2d Viene utilizzato per applicare il sovracampionamento 2D del vicino più vicino a un segnale di ingresso composto da più canali di ingresso.
4) torch.nn.UpsamplingBilinear2d Viene utilizzato per applicare il sovracampionamento bilineare 2D a un segnale di ingresso composto da più canali di ingresso.
16. Livelli DataParallel (multi-GPU, distribuiti)
1) torcia.nn.DataParallel Viene utilizzato per implementare il parallelismo dei dati a livello di modulo.
2) torch.nn.DistributedDataParallel Viene utilizzato per implementare il parallelismo dei dati distribuiti, che si basa sul pacchetto torch.distributed a livello di modulo.
3) torch.nn.DistributedDataParallelCPU Viene utilizzato per implementare il parallelismo dei dati distribuiti per la CPU a livello del modulo.
17. Utilità
1) torcia.nn.clip_grad_norm_ Viene utilizzato per ritagliare la norma del gradiente di un iterabile di parametri.
2) torcia.nn.clip_grad_value_ Viene utilizzato per ritagliare la norma del gradiente di un iterabile di parametri al valore specificato.
3) torcia.nn.parametri_to_vettore Viene utilizzato per convertire i parametri in un vettore.
4) torcia.nn.vettore_to_parametri Viene utilizzato per convertire un vettore nei parametri.
5) torcia.nn.weight_norm Viene utilizzato per applicare la normalizzazione del peso a un parametro nel modulo specificato.
6) torch.nn.remove_weight_norm Viene utilizzato per rimuovere la normalizzazione e la riparametrizzazione del peso da un modulo.
7) torcia.nn.spectral_norm Viene utilizzato per applicare la normalizzazione spettrale a un parametro nel modulo specificato.
8) torch.nn.PackedSequence Verrà utilizzato per contenere i dati e l'elenco di batch_sizes di una sequenza compressa.
9) torch.nn.pack_padded_sequence Viene utilizzato per imballare un Tensore contenente sequenze imbottite di lunghezza variabile.
10) torch.nn.pad_packed_sequence Viene utilizzato per riempire un batch compresso di sequenze di lunghezza variabile.
11) torch.nn.pad_sequence Viene utilizzato per riempire un elenco di tensori di lunghezza variabile con valore di riempimento.
12) torch.nn.pack_sequence Viene utilizzato per comprimere un elenco di tensori di lunghezza variabile
13) torch.nn.remove_spectral_norm Viene utilizzato per rimuovere la normalizzazione spettrale e la riparametrizzazione da un modulo.

Riferimento:

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