logo

torch.nn i PyTorch

PyTorch leverer torch.nn-modulet for at hjælpe os med at skabe og træne det neurale netværk. Vi vil først træne det grundlæggende neurale netværk på MNIST-datasættet uden at bruge nogen funktioner fra disse modeller. Vi vil kun bruge den grundlæggende PyTorch-tensorfunktionalitet, og derefter tilføjer vi trinvist én funktion fra torch.nn ad gangen.

torch.nn giver os mange flere klasser og moduler til at implementere og træne det neurale netværk.

Pakken nn indeholder følgende moduler og klasser:

Ja Nej Klasse og modul Beskrivelse
1. fakkel.nn.Parameter Det er en type tensor, der skal betragtes som en modulparameter.
2. Containere
1) fakkel.nn.Modul Det er en basisklasse for alle neurale netværksmoduler.
2) fakkel.nn.Sekventiel Det er en sekventiel beholder, hvor moduler tilføjes i samme rækkefølge, som de sendes i konstruktøren.
3) torch.nn.ModuleList Dette vil indeholde undermoduler i en liste.
4) torch.nn.ModuleDict Dette vil rumme undermoduler i en mappe.
5) torch.nn.ParameterList Dette vil holde parametrene på en liste.
6) torch.nn.parameterDict Dette vil opbevare parametrene i en mappe.
3. Konvolutionslag
1) fakkel.nn.Conv1d Denne pakke vil blive brugt til at anvende en 1D-foldning over et inputsignal, der er sammensat af flere inputplaner.
2) fakkel.nn.Conv2d Denne pakke vil blive brugt til at anvende en 2D-foldning over et inputsignal, der består af flere inputplaner.
3) torch.nn.Conv3d Denne pakke vil blive brugt til at anvende en 3D-foldning over et inputsignal sammensat af flere inputplaner.
4) torch.nn.ConvTranspose1d Denne pakke vil blive brugt til at anvende en 1D transponeret foldningsoperator over et inputbillede, der består af flere inputplaner.
5) torch.nn.ConvTranspose2d Denne pakke vil blive brugt til at anvende en 2D-transponeret foldningsoperator over et inputbillede, der består af flere inputplaner.
6) torch.nn.ConvTranspose3d Denne pakke vil blive brugt til at anvende en 3D-transponeret foldningsoperator over et inputbillede, der består af flere inputplaner.
7) fakkel.nn.Udfolde sig Det bruges til at udtrække glidende lokale blokke fra en batchet inputtensor.
8) fakkel.nn.Fold Det bruges til at kombinere en række glidende lokale blokke til en stor indeholdende tensor.
4. Samling af lag
1) fakkel.nn.MaxPool1d Det bruges til at anvende en 1D max pooling over et inputsignal, der består af flere inputplaner.
2) fakkel.nn.MaxPool2d Det bruges til at anvende en 2D max pooling over et inputsignal, der består af flere inputplaner.
3) fakkel.nn.MaxPool3d Det bruges til at anvende en 3D max pooling over et inputsignal, der består af flere inputplaner.
4) fakkel.nn.MaxUnpool1d Det bruges til at beregne den partielle inverse af MaxPool1d.
5) fakkel.nn.MaxUnpool2d Det bruges til at beregne den delvise inverse af MaxPool2d.
6) fakkel.nn.MaxUnpool3d Det bruges til at beregne den delvise inverse af MaxPool3d.
7) fakkel.nn.AvgPool1d Det bruges til at anvende en 1D-gennemsnitlig pooling over et inputsignal, der består af flere inputplaner.
8) torch.nn.AvgPool2d Det bruges til at anvende en 2D-gennemsnitspooling over et inputsignal, der består af flere inputplaner.
9) torch.nn.AvgPool3d Det bruges til at anvende en 3D-gennemsnitspooling over et inputsignal, der består af flere inputplaner.
10) fakkel.nn.FractionalMaxPool2d Det bruges til at anvende en 2D fraktioneret max pooling over et inputsignal, der består af flere inputplaner.
11) torch.nn.LPPool1d Det bruges til at anvende en 1D-effektgennemsnitlig pooling over et inputsignal, der består af flere inputplaner.
12) torch.nn.LPPool2d Det bruges til at anvende en 2D-effektgennemsnitlig pooling over et inputsignal, der består af flere inputplaner.
13) fakkel.nn.AdavtiveMaxPool1d Det bruges til at anvende en 1D adaptiv max-pooling over et inputsignal, der består af flere inputplaner.
14) torch.nn.AdavtiveMaxPool2d Det bruges til at anvende en 2D adaptiv max-pooling over et inputsignal, der består af flere inputplaner.
15) torch.nn.AdavtiveMaxPool3d Det bruges til at anvende en 3D adaptiv max pooling over et inputsignal, der består af flere inputplaner.
16) torch.nn.AdavtiveAvgPool1d Det bruges til at anvende en 1D adaptiv gennemsnitspooling over et inputsignal, der består af flere inputplaner.
17) torch.nn.AdavtiveAvgPool2d Det bruges til at anvende en 2D adaptiv gennemsnitspooling over et inputsignal, der består af flere inputplaner.
18) torch.nn.AdavtiveAvgPool3d Det bruges til at anvende en 3D adaptiv gennemsnitspooling over et inputsignal, der består af flere inputplaner.
5. Polstringslag
1) fakkel.nn.ReflectionPad1d Det vil udfylde inputtensoren ved hjælp af refleksionen af ​​inputgrænsen.
2) fakkel.nn.ReflactionPad2d Det vil udfylde inputtensoren ved hjælp af refleksionen af ​​inputgrænsen.
3) torch.nn.ReplicationPad1 Det vil udfylde inputtensoren ved hjælp af replikeringen af ​​inputgrænsen.
4) torch.nn.ReplicationPad2d Det vil udfylde inputtensoren ved hjælp af replikeringen af ​​inputgrænsen.
5) torch.nn.ReplicationPad3d Det vil udfylde inputtensoren ved hjælp af replikeringen af ​​inputgrænsen.
6) torch.nn.ZeroPad2d Det vil udfylde inputtensorgrænserne med nul.
7) fakkel.nn.ConstantPad1d Det vil udfylde inputtensorgrænserne med en konstant værdi.
8) fakkel.nn.ConstantPad2d Det vil udfylde inputtensorgrænserne med en konstant værdi.
9) fakkel.nn.ConstantPad3d Det vil udfylde inputtensorgrænserne med en konstant værdi.
6. Ikke-lineære aktiveringer (vægtet sum, ikke-linearitet)
1) fakkel.nn.ELU Det vil bruge til at anvende den elementmæssige funktion:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) fakkel.nn.Hardkrympe Det vil bruge til at anvende den hårde krympningsfunktion element-mæssig funktion:
torch.nn i PyTorch
3) fakkel.nn.LeakyReLU Det vil bruge til at anvende den elementmæssige funktion:
LeakyReLu(x)=max(0,x) +negative_slope*min(0,x)
4) fakkel.nn.LogSigmoid Det vil bruge til at anvende den elementmæssige funktion:
torch.nn i PyTorch
5) fakkel.nn.MultiheadAttention Det bruges til at give modellen mulighed for at behandle information fra forskellige repræsentationsunderrum
6) fakkel.nn.PReLU Det vil blive brugt til at anvende den elementmæssige funktion:
PReLU(x)=max(0,x)+a*min(0,x)
7) fakkel.nn.ReLU Det vil bruge til at anvende den ensrettede lineære enhedsfunktion elementmæssigt:
ReLU(x)=max(0,x)
8) fakkel.nn.ReLU6 Det vil blive brugt til at anvende den elementmæssige funktion:
ReLU6(x)=min(max(0,x),6)
9) fakkel.nn.RReLU Det vil bruge til at anvende den randomiserede utætte ensrettede lineære enhedsfunktion, elementmæssigt, som beskrevet i papiret:
torch.nn i PyTorch
10) fakkel.nn.SELU Det vil bruge til at anvende den elementmæssige funktion som:
SELU(x)=skala*(max(0,x)+ min(0,a*(exp(x)-1)))

Her α= 1,6732632423543772848170429916717 og skala = 1,0507009873554804934193349852946.
11) fakkel.nn.MÅL Det vil bruge til at anvende den elementmæssige funktion som:
torch.nn i PyTorch
12) fakkel.nn.Sigmoid Det vil bruge til at anvende den elementmæssige funktion som:
torch.nn i PyTorch
13) fakkel.nn.Softplus Det vil bruge til at anvende den elementmæssige funktion som:
torch.nn i PyTorch
14) fakkel.nn.Softshrink Det vil bruge til at anvende blød krympefunktion elementvist som:
torch.nn i PyTorch
15) fakkel.nn.Softsign Det vil bruge til at anvende den elementmæssige funktion som:
torch.nn i PyTorch
16) fakkel.nn.Tanh Det vil bruge til at anvende den elementmæssige funktion som:
torch.nn i PyTorch
17) fakkel.nn.Tanhshrink Det vil bruge til at anvende den elementmæssige funktion som:
Tanhshrink(x)=x-Tanh(x)
18) fakkel.nn.Tærskel Det vil bruge til at tærske hvert element i inputtensoren. Tærskel er defineret som:
torch.nn i PyTorch
7. Ikke-lineære aktiveringer (andre)
1) fakkel.nn.Softmin Den bruges til at anvende softmin-funktionen på en n-dimensional inputtensor for at omskalere dem. Derefter ligger elementerne i det n-dimensionelle output Tensor i området 0, 1 og summen til 1. Softmin er defineret som:
torch.nn i PyTorch
2) fakkel.nn.Softmax Den bruges til at anvende softmax-funktionen på en n-dimensional inputtensor for at omskalere dem. Derefter ligger elementerne i det n-dimensionelle output Tensor i området 0, 1 og summen til 1. Softmax er defineret som:
torch.nn i PyTorch
3) fakkel.nn.Softmax2d Det bruges til at anvende SoftMax over funktioner til hver rumlig placering.
4) torch.nn.LogSoftmax Den bruges til at anvende LogSoftmax-funktion på en n-dimensional inputtensor. LofSoftmax-funktionen kan defineres som:
torch.nn i PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Det er en strategi for træningsmodeller med store udgangsrum. Det er meget effektivt, når etiketfordelingen er meget ubalanceret
8. Normaliseringslag
1) torch.nn.BatchNorm1d Det bruges til at anvende batch-normalisering over en 2D- eller 3D-input.
torch.nn i PyTorch
2) torch.nn.BatchNorm2d Det bruges til at anvende batch-normalisering over en 4D.
torch.nn i PyTorch
3) torch.nn.BatchNorm3d Det bruges til at anvende batch-normalisering over 5D-input.
torch.nn i PyTorch
4) torch.nn.GroupNorm Det bruges til at anvende gruppenormalisering over en mini-batch af input.
torch.nn i PyTorch
5) torch.nn.SyncBatchNorm Det bruges til at anvende batch-normalisering over n-dimensionelle input.
torch.nn i PyTorch
6) torch.nn.InstanceNorm1d Det bruges til at anvende en instansnormalisering over et 3D-input.
torch.nn i PyTorch
7) torch.nn.InstanceNorm2d Det bruges til at anvende en instansnormalisering over et 4D-input.
torch.nn i PyTorch
8) torch.nn.InstanceNorm3d Det bruges til at anvende en instansnormalisering over et 5D-input.
torch.nn i PyTorch
9) fakkel.nn.LayerNorm Det bruges til at anvende lagnormalisering over en mini-batch af input.
torch.nn i PyTorch
10) torch.nn.LocalResponseNorm Det bruges til at anvende lokal responsnormalisering over et inputsignal, som er sammensat af flere inputplaner, hvor kanalen optager den anden dimension.
9. Tilbagevendende lag
1) fakkel.nn.RNN Den bruges til at anvende en flerlags Elman RNN med tanh eller ReLU ikke-linearitet til en inputsekvens. Hvert lag beregner følgende funktion for hvert element i inputsekvensen:
ht=tanh(Wdemxt+bdem+Whhtt-1+bhh)
2) fakkel.nn.LSTM Den bruges til at anvende en flerlags lang korttidshukommelse (LSTM) RNN til en inputsekvens. Hvert lag beregner følgende funktion for hvert element i inputsekvensen:
torch.nn i PyTorch
3) fakkel.nn.GRU Den bruges til at anvende en multi-layer gated recurrent unit (GRU) RNN til en inputsekvens. Hvert lag beregner følgende funktion for hvert element i inputsekvensen:
torch.nn i PyTorch
4) fakkel.nn.RNNCell Det bruges til at anvende en Elman RNN celle med tanh eller ReLU ikke-linearitet til en inputsekvens. Hvert lag beregner følgende funktion for hvert element i inputsekvensen:
h'=tanh(Wdemx+bdem+Whhh+bhh)
ReLU bruges i stedet for tanh
5) fakkel.nn.LSTMCell Den bruges til at anvende en langtidshukommelsescelle (LSTM) til en inputsekvens. Hvert lag beregner følgende funktion for hvert element i inputsekvensen:
torch.nn i PyTorch
Hvor σ er sigmoidfunktionen, og * er Hadamard-produktet.
6) fakkel.nn.GRUCell Den bruges til at anvende en gated recurrent unit (GRU) celle til en inputsekvens. Hvert lag beregner følgende funktion for hvert element i inputsekvensen:
torch.nn i PyTorch
10. Lineære lag
1) fakkel.nn.Identitet Det er en pladsholderidentitetsoperator, som er argumentufølsom.
2) fakkel.nn.Lineær Det bruges til at anvende en lineær transformation til de indkommende data:
y=xAT+b
3) fakkel.nn.Bilineær Det bruges til at anvende en bilineær transformation til de indkommende data:
y=x1Økse2+b
elleve. Udfaldslag
1) fakkel.nn.Frafald Det bruges til regularisering og forebyggelse af co-adaptation af neuroner. En faktor på torch.nn i PyTorchunder træning skalerer outputtet. Det betyder, at modulet beregner en identitetsfunktion under evalueringen.
2) torch.nn.Dropout2d Hvis tilstødende pixels i feature maps er korreleret, vil torch.nn.Dropout ikke regulere aktiveringerne, og det vil reducere den effektive indlæringshastighed. I dette tilfælde bruges torch.nn.Dropout2d() til at fremme uafhængighed mellem feature maps.
3) torch.nn.Dropout3d Hvis tilstødende pixels i feature maps er korreleret, vil torch.nn.Dropout ikke regulere aktiveringerne, og det vil reducere den effektive indlæringshastighed. I dette tilfælde bruges torch.nn.Dropout2d () til at fremme uafhængighed mellem feature maps.
4) torch.nn.AlphaDropout Det bruges til at anvende Alpha Dropout over inputtet. Alpha Dropout er en type Dropout, som bevarer den selvnormaliserende egenskab.
12. Sparsomme lag
1) fakkel.nn.Indlejring Det bruges til at gemme ordindlejringer og hente dem ved hjælp af indekser. Indgangen til modulet er en liste over indekser, og outputtet er den tilsvarende ordindlejring.
2) torch.nn.EmbeddingBag Det bruges til at beregne summer eller gennemsnit af 'poser' med indlejring uden at instansiere den mellemliggende indlejring.
13. Afstandsfunktion
1) fakkel.nn.CosineSimilaritet Det vil returnere cosinus-ligheden mellem x1 og x2, beregnet langs dim.
torch.nn i PyTorch
2) torch.nn.PairwiseDistance Den beregner den batchvise parvise afstand mellem vektorer v1, v2 ved hjælp af p-normen:
torch.nn i PyTorch
14. Tabsfunktion
1) fakkel.nn.L1Tab Det bruges til et kriterium, der måler den gennemsnitlige absolutte fejl mellem hvert element i input x og mål y. Det ureducerede tab kan beskrives som:
l(x,y)=L={l1,...,ln},ln=|xn-ogn|,
Hvor N er batchstørrelsen.
2) fakkel.nn.MSEloss Det bruges til et kriterium, der måler den gennemsnitlige kvadratiske fejl mellem hvert element i input x og mål y. Det ureducerede tab kan beskrives som:
l(x,y)=L={l1,...,ln},ln=(xn-ogn)2,
Hvor N er batchstørrelsen.
3) torch.nn.CrossEntropyLoss Dette kriterium kombinerer nn.LogSoftmax() og nn.NLLLoss() i én enkelt klasse. Det er nyttigt, når vi træner et klassifikationsproblem med C-klasser.
4) torch.nn.CTCLoss Connectionist Temporal Classification tab beregner tab mellem en kontinuerlig tidsserie og en målsekvens.
5) fakkel.nn.NLLLos Negative Log-Likelihood-tabet bruges til at træne et klassifikationsproblem med C-klasser.
6) fakkel.nn.PoissonNLLLos Det negative log-sandsynlighedstab med Poisson-fordelingen af ​​t
target~Poisson(input)tab(input,mål)=input-mål*log(mål!)målet.
7) torch.nn.KLDivLoss Det er et nyttigt afstandsmål til kontinuerlig fordeling, og det er også nyttigt, når vi udfører direkte regression over rummet med kontinuerlig outputfordeling.
8) fakkel.nn.BCELoss Det bruges til at oprette et kriterium, som måler den binære krydsentropi mellem målet og outputtet. Det ureducerede tab kan beskrives som:
l(x,y)=L={l1,...,ln},ln=-vn[ogn*logxn+ (1-årn)*log(1-xn)],
Hvor N er batchstørrelsen.
9) torch.nn.BCEWithLogitsLoss Den kombinerer et Sigmoid-lag og BCEloss i én enkelt klasse. Vi kan drage fordel af log-sum-exp-tricket for numerisk stabilitet ved at kombinere operationen i et lag.
10) torch.nn.MarginRankingLoss Det opretter et kriterium, som måler tabet af givne input x1, x2, to 1D mini-batch-tensorer og en etiket 1D-mini-batch-tensor y, som indeholder 1 eller -1. Tabsfunktionen for hver prøve i minibatchen er som følger:
tab(x,y)=max(0,-y*(x1-x2)+margin
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss måler tabet af givet en inputtensor x og en labels tensor y, som indeholder 1 eller -1. Det bruges til at måle, om to indgange er ens eller forskellige. Tabsfunktionen er defineret som:
torch.nn i PyTorch
12) torch.nn.MultiLabelMarginLoss Det bruges til at skabe et kriterium, som optimerer et multi-klasse multi-klassifikation hængseltab mellem input x og output y.
torch.nn i PyTorch
13) torch.nn.SmoothL1Loss Det bruges til at oprette et kriterium, som bruger et kvadreret led, hvis den absolutte elementmæssige fejl falder under 1 og et L1-led ellers. Det er også kendt som Huber-tab:
torch.nn i PyTorch
14) torch.nn.SoftMarginLoss Det bruges til at skabe et kriterium, som optimerer to-klassifikationslogistiske tab mellem inputtensor x og måltensor y, som indeholder 1 eller -1.
torch.nn i PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Det bruges til at oprette et kriterium, som optimerer multi-label en-versus-alle tab baseret på max-entropi mellem input x og mål y af størrelse (N, C).
torch.nn i PyTorch
16) torch.nn.CosineEmbeddingLoss Det bruges til at skabe et kriterium, som måler tabet af givne inputtensorer x1, x2 og en tensoretiket y med værdierne 1 eller -1. Den bruges til at måle, om to indgange er ens eller uens, ved hjælp af cosinusafstanden.
torch.nn i PyTorch
17) torch.nn.MultiMarginLoss Det bruges til at skabe et kriterium, som optimerer et multi-klasse klassifikations-hængseltab mellem input x og output y.
torch.nn i PyTorch
18) torch.nn.TripletMarginLoss Det bruges til at skabe et kriterium, som måler triplettabet af givet inputtensorer x1, x2, x3 og en margin med en værdi større end 0. Det bruges til at måle en relativ lighed mellem prøver. En triplet er sammensat af et anker, et positivt eksempel og et negativt eksempel.
L(a,p,n)=max{d(ajeg, sjeg)-d(ajeg,njeg)+margin,0}
femten. Synslag
1) torch.nn.PixelShuffle Det bruges til at omarrangere elementerne i en tensor af form(*,C×r2,H,W) til en tensor af form (*,C,H×r,W,r)
2) fakkel.nn.Upsample Det bruges til at upsample en given multi-kanal 1D, 2D eller 3D data.
3) torch.nn.upsamplingNearest2d Den bruges til at anvende 2D-nærmeste nabo upsampling til et inputsignal, som er sammensat med flere inputkanaler.
4) torch.nn.UpsamplingBilinear2d Det bruges til at anvende 2D bilineær upsampling til et inputsignal, der er sammensat med flere inputkanaler.
16. DataParallelle lag (multi-GPU, distribueret)
1) torch.nn.DataParallel Det bruges til at implementere dataparallelisme på modulniveau.
2) torch.nn.DistributedDataParallel Det bruges til at implementere distribueret dataparallelisme, som er baseret på torch.distributed-pakken på modulniveau.
3) torch.nn.DistributedDataParallelCPU Det bruges til at implementere distribueret dataparallelisme for CPU'en på modulniveau.
17. Hjælpeprogrammer
1) torch.nn.clip_grad_norm_ Det bruges til at klippe gradientnormen for en iterabel af parametre.
2) torch.nn.clip_grad_value_ Den bruges til at klippe gradientnormen for en gentagelse af parametre ved den angivne værdi.
3) torch.nn.parameters_to_vector Det bruges til at konvertere parametre til én vektor.
4) torch.nn.vector_to_parameters Det bruges til at konvertere en vektor til parametrene.
5) torch.nn.weight_norm Det bruges til at anvende vægtnormalisering på en parameter i det givne modul.
6) torch.nn.remove_weight_norm Det bruges til at fjerne vægtnormaliseringen og re-parametriseringen fra et modul.
7) torch.nn.spectral_norm Det bruges til at anvende spektral normalisering til en parameter i det givne modul.
8) torch.nn.PackedSequence Det vil bruge til at holde dataene og listen over batch_sizes af en pakket sekvens.
9) torch.nn.pack_padded_sequence Det bruges til at pakke en Tensor, der indeholder polstrede sekvenser af variabel længde.
10) torch.nn.pad_packed_sequence Det bruges til at pude en pakket batch af sekvenser med variabel længde.
11) torch.nn.pad_sequence Den bruges til at udfylde en liste over tensorer med variabel længde med polstringsværdi.
12) torch.nn.pack_sequence Det bruges til at pakke en liste over tensorer med variabel længde
13) torch.nn.remove_spectral_norm Det bruges til at fjerne den spektrale normalisering og re-parameterisering fra et modul.

Reference:

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