logo

torch.nn i PyTorch

PyTorch tilbyr torch.nn-modulen for å hjelpe oss med å lage og trene det nevrale nettverket. Vi vil først trene det grunnleggende nevrale nettverket på MNIST-datasettet uten å bruke noen funksjoner fra disse modellene. Vi vil bare bruke den grunnleggende PyTorch-tensorfunksjonaliteten, og deretter vil vi gradvis legge til én funksjon fra torch.nn om gangen.

torch.nn gir oss mange flere klasser og moduler for å implementere og trene det nevrale nettverket.

nn-pakken inneholder følgende moduler og klasser:

Ja Nei Klasse og modul Beskrivelse
1. fakkel.nn.Parameter Det er en type tensor som er å betrakte som en modulparameter.
2. Containere
1) fakkel.nn.Modul Det er en basisklasse for alle nevrale nettverksmoduler.
2) torch.nn.Sekvensiell Det er en sekvensiell beholder der moduler legges til i samme rekkefølge som de sendes i konstruktøren.
3) torch.nn.ModuleList Dette vil inneholde undermoduler i en liste.
4) torch.nn.ModuleDict Dette vil inneholde undermoduler i en katalog.
5) torch.nn.ParameterList Dette vil holde parametrene i en liste.
6) torch.nn.parameterDict Dette vil holde parametrene i en katalog.
3. Konvolusjonslag
1) fakkel.nn.Conv1d Denne pakken vil bli brukt til å bruke en 1D konvolusjon over et inngangssignal som består av flere inngangsplaner.
2) fakkel.nn.Conv2d Denne pakken vil bli brukt til å bruke en 2D-konvolusjon over et inngangssignal som består av flere inngangsplaner.
3) fakkel.nn.Conv3d Denne pakken vil bli brukt til å bruke en 3D-konvolusjon over et inngangssignal som består av flere inngangsplaner.
4) torch.nn.ConvTranspose1d Denne pakken vil bli brukt til å bruke en 1D-transponert konvolusjonsoperator over et inngangsbilde som består av flere inngangsplaner.
5) torch.nn.ConvTranspose2d Denne pakken vil bli brukt til å bruke en 2D-transponert konvolusjonsoperator over et inngangsbilde som består av flere inngangsplaner.
6) torch.nn.ConvTranspose3d Denne pakken vil bli brukt til å bruke en 3D-transponert konvolusjonsoperator over et inngangsbilde som består av flere inngangsplaner.
7) fakkel.nn.Utfolde seg Den brukes til å trekke ut glidende lokale blokker fra en batch-inndatatensor.
8) fakkel.nn.Fold Den brukes til å kombinere en rekke glidende lokale blokker til en stor inneholdende tensor.
4. Samle lag
1) fakkel.nn.MaxPool1d Den brukes til å bruke en 1D maks pooling over et inngangssignal som består av flere inngangsplaner.
2) fakkel.nn.MaxPool2d Den brukes til å bruke en 2D maks pooling over et inngangssignal som består av flere inngangsplaner.
3) fakkel.nn.MaxPool3d Den brukes til å bruke en 3D max pooling over et inngangssignal som består av flere inngangsplaner.
4) fakkel.nn.MaxUnpool1d Den brukes til å beregne den delvise inverse av MaxPool1d.
5) fakkel.nn.MaxUnpool2d Den brukes til å beregne den delvise inverse av MaxPool2d.
6) fakkel.nn.MaxUnpool3d Den brukes til å beregne den delvise inverse av MaxPool3d.
7) fakkel.nn.AvgPool1d Den brukes til å bruke en 1D gjennomsnittlig pooling over et inngangssignal som består av flere inngangsplaner.
8) fakkel.nn.AvgPool2d Den brukes til å bruke en 2D gjennomsnittlig pooling over et inngangssignal som består av flere inngangsplaner.
9) fakkel.nn.AvgPool3d Den brukes til å bruke en 3D-gjennomsnittspooling over et inngangssignal som består av flere inngangsplaner.
10) fakkel.nn.FractionalMaxPool2d Den brukes til å bruke en 2D fraksjonert maks pooling over et inngangssignal som består av flere inngangsplaner.
11) fakkel.nn.LPPool1d Den brukes til å bruke en 1D-effektgjennomsnittlig pooling over et inngangssignal som består av flere inngangsplaner.
12) torch.nn.LPPool2d Den brukes til å bruke en 2D-effektgjennomsnittlig pooling over et inngangssignal som består av flere inngangsplaner.
13) fakkel.nn.AdavtiveMaxPool1d Den brukes til å bruke en 1D adaptiv maks pooling over et inngangssignal som består av flere inngangsplaner.
14) fakkel.nn.AdavtiveMaxPool2d Den brukes til å bruke en 2D adaptiv maks pooling over et inngangssignal som består av flere inngangsplaner.
15) fakkel.nn.AdavtiveMaxPool3d Den brukes til å bruke en 3D adaptiv maks pooling over et inngangssignal som består av flere inngangsplaner.
16) torch.nn.AdavtiveAvgPool1d Den brukes til å bruke en 1D adaptiv gjennomsnittspooling over et inngangssignal som består av flere inngangsplaner.
17) torch.nn.AdavtiveAvgPool2d Den brukes til å bruke en 2D adaptiv gjennomsnittspooling over et inngangssignal som består av flere inngangsplaner.
18) torch.nn.AdavtiveAvgPool3d Den brukes til å bruke en 3D adaptiv gjennomsnittspooling over et inngangssignal som består av flere inngangsplaner.
5. Polstringslag
1) fakkel.nn.ReflectionPad1d Den vil fylle inn-tensoren ved å bruke refleksjonen av inngangsgrensen.
2) fakkel.nn.ReflactionPad2d Den vil fylle inn-tensoren ved å bruke refleksjonen av inngangsgrensen.
3) torch.nn.ReplicationPad1 Den vil fylle inn-tensoren ved å bruke replikeringen av inngangsgrensen.
4) torch.nn.ReplicationPad2d Den vil fylle inn-tensoren ved å bruke replikeringen av inngangsgrensen.
5) torch.nn.ReplicationPad3d Den vil fylle inn-tensoren ved å bruke replikeringen av inngangsgrensen.
6) fakkel.nn.ZeroPad2d Den vil fylle inn-tensorgrensene med null.
7) fakkel.nn.ConstantPad1d Den vil fylle inn-tensorgrensene med en konstant verdi.
8) fakkel.nn.ConstantPad2d Den vil fylle inn-tensorgrensene med en konstant verdi.
9) fakkel.nn.ConstantPad3d Den vil fylle inn-tensorgrensene med en konstant verdi.
6. Ikke-lineære aktiveringer (vektet sum, ikke-linearitet)
1) fakkel.nn.ELU Den vil bruke til å bruke den elementvise funksjonen:
ELU(x)=maks(0,x)+min(0,α*(exp(x)-1))
2) fakkel.nn.Hardkrympe Den vil bruke til å bruke den harde krympingsfunksjonen elementvis funksjon:
torch.nn i PyTorch
3) fakkel.nn.LeakyReLU Den vil bruke til å bruke den elementvise funksjonen:
LeakyReLu(x)=max(0,x) +negative_slope*min(0,x)
4) fakkel.nn.LogSigmoid Den vil bruke til å bruke den elementvise funksjonen:
torch.nn i PyTorch
5) fakkel.nn.MultiheadAttention Den brukes til å tillate modellen å ivareta informasjon fra forskjellige representasjonsunderrom
6) fakkel.nn.PReLU Den vil bli brukt til å bruke den elementvise funksjonen:
PReLU(x)=maks(0,x)+a*min(0,x)
7) fakkel.nn.ReLU Den vil bruke til å bruke den korrigerte lineære enhetsfunksjonen elementvis:
ReLU(x)=maks(0,x)
8) fakkel.nn.ReLU6 Den vil bli brukt til å bruke den elementvise funksjonen:
ReLU6(x)=min(maks(0,x),6)
9) fakkel.nn.RReLU Den vil brukes til å bruke den randomiserte lekkende rettet lineære enhetsfunksjonen, elementmessig, som beskrevet i artikkelen:
torch.nn i PyTorch
10) fakkel.nn.SELU Den vil bruke til å bruke den elementvise funksjonen som:
SELU(x)=skala*(maks(0,x)+ min(0,a*(exp(x)-1)))

Her α= 1,6732632423543772848170429916717 og skala = 1,0507009873554804934193349852946.
11) fakkel.nn.MÅL Den vil bruke til å bruke den elementvise funksjonen som:
torch.nn i PyTorch
12) fakkel.nn.Sigmoid Den vil bruke til å bruke den elementvise funksjonen som:
torch.nn i PyTorch
13) fakkel.nn.Softplus Den vil bruke til å bruke den elementvise funksjonen som:
torch.nn i PyTorch
14) fakkel.nn.Softshrink Den vil bruke til å bruke myk krympefunksjon elementvis som:
torch.nn i PyTorch
15) fakkel.nn.Softsign Den vil bruke til å bruke den elementvise funksjonen som:
torch.nn i PyTorch
16) fakkel.nn.Tanh Den vil bruke til å bruke den elementvise funksjonen som:
torch.nn i PyTorch
17) fakkel.nn.Tanhshrink Den vil bruke til å bruke den elementvise funksjonen som:
Tanhshrink(x)=x-Tanh(x)
18) fakkel.nn.Terskel Den vil bruke til å terskler hvert element i inngangen Tensor. Terskel er definert som:
torch.nn i PyTorch
7. Ikke-lineære aktiveringer (annet)
1) fakkel.nn.Softmin Den brukes til å bruke softmin-funksjonen på en n-dimensjonal inngang Tensor for å reskalere dem. Etter det ligger elementene i den n-dimensjonale utgangen Tensor i området 0, 1 og sum til 1. Softmin er definert som:
torch.nn i PyTorch
2) fakkel.nn.Softmax Den brukes til å bruke softmax-funksjonen på en n-dimensjonal inngang Tensor for å reskalere dem. Etter det ligger elementene i den n-dimensjonale utgangen Tensor i området 0, 1 og summen til 1. Softmax er definert som:
torch.nn i PyTorch
3) fakkel.nn.Softmax2d Den brukes til å bruke SoftMax over funksjoner på hver romlig plassering.
4) fakkel.nn.LogSoftmax Den brukes til å bruke LogSoftmax-funksjonen på en n-dimensjonal inngang Tensor. LofSoftmax-funksjonen kan defineres som:
torch.nn i PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Det er en strategi for treningsmodeller med store utgangsrom. Det er veldig effektivt når etikettfordelingen er svært ubalansert
8. Normaliseringslag
1) fakkel.nn.BatchNorm1d Den brukes til å bruke batch-normalisering over en 2D- eller 3D-inngang.
torch.nn i PyTorch
2) fakkel.nn.BatchNorm2d Den brukes til å bruke batch-normalisering over en 4D.
torch.nn i PyTorch
3) fakkel.nn.BatchNorm3d Den brukes til å bruke batch-normalisering over 5D-innganger.
torch.nn i PyTorch
4) torch.nn.GroupNorm Den brukes til å bruke gruppenormalisering over en mini-batch med innganger.
torch.nn i PyTorch
5) torch.nn.SyncBatchNorm Den brukes til å bruke batch-normalisering over n-dimensjonale innganger.
torch.nn i PyTorch
6) torch.nn.InstanceNorm1d Den brukes til å bruke en forekomstnormalisering over en 3D-inngang.
torch.nn i PyTorch
7) torch.nn.InstanceNorm2d Den brukes til å bruke en instansnormalisering over en 4D-inngang.
torch.nn i PyTorch
8) torch.nn.InstanceNorm3d Den brukes til å bruke en instansnormalisering over en 5D-inngang.
torch.nn i PyTorch
9) fakkel.nn.LayerNorm Den brukes til å bruke lagnormalisering over en mini-batch med innganger.
torch.nn i PyTorch
10) torch.nn.LocalResponseNorm Den brukes til å bruke lokal responsnormalisering over et inngangssignal som er sammensatt av flere inngangsplaner, hvor kanalen opptar den andre dimensjonen.
9. Tilbakevendende lag
1) fakkel.nn.RNN Den brukes til å bruke en flerlags Elman RNN med tanh eller ReLU ikke-linearitet til en inngangssekvens. Hvert lag beregner følgende funksjon for hvert element i inngangssekvensen:
ht=tanh(Wdemxt+bdem+Whhtt-1+bhh)
2) fakkel.nn.LSTM Den brukes til å bruke et flerlags langtidskorttidsminne (LSTM) RNN på en inngangssekvens. Hvert lag beregner følgende funksjon for hvert element i inngangssekvensen:
torch.nn i PyTorch
3) fakkel.nn.GRU Den brukes til å bruke en flerlags gated recurrent unit (GRU) RNN til en inngangssekvens. Hvert lag beregner følgende funksjon for hvert element i inngangssekvensen:
torch.nn i PyTorch
4) fakkel.nn.RNNCell Den brukes til å bruke en Elman RNN-celle med tanh eller ReLU ikke-linearitet til en inngangssekvens. Hvert lag beregner følgende funksjon for hvert element i inngangssekvensen:
h'=tanh(Wdemx+bdem+Whhh+bhh)
ReLU brukes i stedet for tanh
5) fakkel.nn.LSTMCell Den brukes til å bruke en langtidsminnecelle (LSTM) til en inngangssekvens. Hvert lag beregner følgende funksjon for hvert element i inngangssekvensen:
torch.nn i PyTorch
Hvor σ er sigmoidfunksjonen, og * er Hadamard-produktet.
6) fakkel.nn.GRUCell Den brukes til å bruke en gated recurrent unit (GRU) celle til en inngangssekvens. Hvert lag beregner følgende funksjon for hvert element i inngangssekvensen:
torch.nn i PyTorch
10. Lineære lag
1) fakkel.nn.Identitet Det er en plassholderidentitetsoperatør som er ufølsom for argumenter.
2) fakkel.nn.Lineær Den brukes til å bruke en lineær transformasjon på innkommende data:
y=xAT+b
3) fakkel.nn.Bilineær Den brukes til å bruke en bilineær transformasjon på innkommende data:
y=x1Øks2+b
elleve. Utfallslag
1) fakkel.nn.Frafall Det brukes til regularisering og forebygging av samtilpasning av nevroner. En faktor på torch.nn i PyTorchunder trening skalerer ytelsen. Det betyr at modulen beregner en identitetsfunksjon under evalueringen.
2) fakkel.nn.Dropout2d Hvis tilstøtende piksler i funksjonskart er korrelert, vil ikke torch.nn.Dropout regulere aktiveringene, og det vil redusere den effektive læringshastigheten. I dette tilfellet brukes torch.nn.Dropout2d() for å fremme uavhengighet mellom funksjonskart.
3) fakkel.nn.Dropout3d Hvis tilstøtende piksler i funksjonskart er korrelert, vil ikke torch.nn.Dropout regulere aktiveringene, og det vil redusere den effektive læringshastigheten. I dette tilfellet brukes torch.nn.Dropout2d () for å fremme uavhengighet mellom funksjonskart.
4) fakkel.nn.AlphaDropout Den brukes til å bruke Alpha Dropout over inngangen. Alpha Dropout er en type Dropout som opprettholder den selvnormaliserende egenskapen.
12. Sparsomme lag
1) fakkel.nn.Innbygging Den brukes til å lagre ordinnbygginger og hente dem ved hjelp av indekser. Inngangen for modulen er en liste over indekser, og utgangen er den tilsvarende ordinnbyggingen.
2) fakkel.nn.EmbeddingBag Den brukes til å beregne summer eller gjennomsnitt av 'poser' med innebygging uten å instansiere den mellomliggende innebyggingen.
1. 3. Avstandsfunksjon
1) fakkel.nn.CosineSimilarity Det vil returnere cosinuslikheten mellom x1 og x2, beregnet langs dim.
torch.nn i PyTorch
2) torch.nn.PairwiseDistance Den beregner den batchvise parvise avstanden mellom vektorene v1, v2 ved å bruke p-normen:
torch.nn i PyTorch
14. Tapsfunksjon
1) fakkel.nn.L1Tap Det brukes til et kriterium som måler den gjennomsnittlige absolutte feilen mellom hvert element i inngangen x og målet y. Det ikke-reduserte tapet kan beskrives som:
l(x,y)=L={l1,...,ln},ln=|xn-ogn|,
Hvor N er batchstørrelsen.
2) fakkel.nn.MSEloss Det brukes til et kriterium som måler gjennomsnittlig kvadratfeil mellom hvert element i inngangen x og målet y. Det ikke-reduserte tapet kan beskrives som:
l(x,y)=L={l1,...,ln},ln=(xn-ogn)2,
Hvor N er batchstørrelsen.
3) torch.nn.CrossEntropyLoss Dette kriteriet kombinerer nn.LogSoftmax() og nn.NLLLoss() i én enkelt klasse. Det er nyttig når vi trener et klassifiseringsproblem med C-klasser.
4) fakkel.nn.CTCLoss Connectionist Temporal Classification-tapet beregner tap mellom en kontinuerlig tidsserie og en målsekvens.
5) fakkel.nn.NLLLoss Negative Log-Likelihood-tapet brukes til å trene et klassifiseringsproblem med C-klasser.
6) fakkel.nn.PoissonNLLLoss Det negative log-sannsynlighetstapet med Poisson-fordelingen på t
target~Poisson(input)tap(input,target)=input-target*log(target!)målet.
7) fakkel.nn.KLDivTap Det er et nyttig avstandsmål for kontinuerlig distribusjon, og det er også nyttig når vi utfører direkte regresjon over rommet med kontinuerlig utgangsfordeling.
8) fakkel.nn.BCELoss Den brukes til å lage et kriterium som måler den binære kryssentropien mellom målet og utgangen. Det ikke-reduserte tapet 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 dra nytte av log-sum-exp-trikset for numerisk stabilitet ved å kombinere operasjonen i ett lag.
10) torch.nn.MarginRankingLoss Det oppretter et kriterium som måler tapet av gitte innganger x1, x2, to 1D mini-batch-tensorer, og en etikett 1D-mini-batch-tensor y som inneholder 1 eller -1. Tapsfunksjonen for hver prøve i minibatchen er som følger:
tap(x,y)=maks(0,-y*(x1-x2)+margin
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss måler tapet av gitt en inngangstensor x og en etikett tensor y som inneholder 1 eller -1. Den brukes til å måle om to innganger er like eller forskjellige. Tapsfunksjonen er definert som:
torch.nn i PyTorch
12) torch.nn.MultiLabelMarginLoss Den brukes til å lage et kriterium som optimerer et multi-klasse multi-klassifisering hengseltap mellom inngang x og utgang y.
torch.nn i PyTorch
13) fakkel.nn.SmoothL1Tap Det brukes til å lage et kriterium som bruker en kvadratisk term hvis den absolutte elementmessige feilen faller under 1 og et L1-ledd ellers. Det er også kjent som Huber-tap:
torch.nn i PyTorch
14) torch.nn.SoftMarginLoss Det brukes til å lage et kriterium som optimerer to-klassifiseringslogistisk tap mellom inngangstensor x og måltensor y som inneholder 1 eller -1.
torch.nn i PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Den brukes til å lage et kriterium som optimerer multi-label en-versus-alle tap basert på maks-entropi mellom input x og mål y av størrelse (N, C).
torch.nn i PyTorch
16) torch.nn.CosineEmbeddingLoss Det brukes til å lage et kriterium som måler tapet av gitte inputtensorer x1, x2 og en tensoretikett y med verdiene 1 eller -1. Den brukes til å måle om to innganger er like eller forskjellige, ved å bruke cosinusavstanden.
torch.nn i PyTorch
17) torch.nn.MultiMarginLoss Den brukes til å lage et kriterium som optimaliserer et multi-klasse klassifiseringshengseltap mellom inngang x og utgang y.
torch.nn i PyTorch
18) torch.nn.TripletMarginLoss Det brukes til å lage et kriterium som måler tripletttapet til gitte inputtensorer x1, x2, x3 og en margin med en verdi større enn 0. Det brukes til å måle en relativ likhet mellom samples. En triplett er sammensatt av et anker, et positivt eksempel og et negativt eksempel.
L(a,p,n)=maks{d(aJeg, sJeg)-d(aJeg,nJeg)+margin,0}
femten. Synslag
1) fakkel.nn.PixelShuffle Den brukes til å omorganisere elementene i en tensor av form(*,C×r2,H,W) til en tensor av form (*,C,H×r,W,r)
2) fakkel.nn.Upsample Den brukes til å oppsample en gitt flerkanals 1D-, 2D- eller 3D-data.
3) torch.nn.upsamplingNearest2d Den brukes til å bruke 2D nærmeste nabo upsampling til et inngangssignal som er sammensatt med flere inngangskanaler.
4) fakkel.nn.UpsamplingBilinear2d Den brukes til å bruke 2D bilineær upsampling til et inngangssignal som er sammensatt av flere inngangskanaler.
16. DataParallelle lag (multi-GPU, distribuert)
1) torch.nn.DataParallel Den brukes til å implementere dataparallellisme på modulnivå.
2) torch.nn.DistributedDataParallel Den brukes til å implementere distribuert dataparallellisme, som er basert på torch.distributed-pakken på modulnivå.
3) torch.nn.DistributedDataParallelCPU Den brukes til å implementere distribuert dataparallellisme for CPU-en på modulnivå.
17. Verktøy
1) torch.nn.clip_grad_norm_ Den brukes til å klippe gradientnormen til en gjentakelig parameter.
2) torch.nn.clip_grad_value_ Den brukes til å klippe gradientnormen til en gjentakelig parameter ved den angitte verdien.
3) torch.nn.parameters_to_vector Den brukes til å konvertere parametere til én vektor.
4) torch.nn.vector_to_parameters Den brukes til å konvertere en vektor til parameterne.
5) torch.nn.weight_norm Den brukes til å bruke vektnormalisering på en parameter i den gitte modulen.
6) torch.nn.remove_weight_norm Den brukes til å fjerne vektnormalisering og re-parameterisering fra en modul.
7) torch.nn.spectral_norm Den brukes til å bruke spektral normalisering til en parameter i den gitte modulen.
8) torch.nn.PackedSequence Den vil bruke til å holde dataene og listen over batch_sizes for en pakket sekvens.
9) torch.nn.pack_padded_sequence Den brukes til å pakke en Tensor som inneholder polstrede sekvenser med variabel lengde.
10) torch.nn.pad_packed_sequence Den brukes til å fylle en pakket batch med sekvenser med variabel lengde.
11) torch.nn.pad_sequence Den brukes til å fylle ut en liste over tensorer med variabel lengde med utfyllingsverdi.
12) torch.nn.pack_sequence Den brukes til å pakke en liste over tensorer med variabel lengde
13) torch.nn.remove_spectral_norm Den brukes til å fjerne spektral normalisering og re-parameterisering fra en modul.

Henvisning:

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