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: | |
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: | |
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: | |
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: | |
12) fakkel.nn.Sigmoid | Den vil bruke til å bruke den elementvise funksjonen som: | |
13) fakkel.nn.Softplus | Den vil bruke til å bruke den elementvise funksjonen som: | |
14) fakkel.nn.Softshrink | Den vil bruke til å bruke myk krympefunksjon elementvis som: | |
15) fakkel.nn.Softsign | Den vil bruke til å bruke den elementvise funksjonen som: | |
16) fakkel.nn.Tanh | Den vil bruke til å bruke den elementvise funksjonen som: | |
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: | |
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: | |
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: | |
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: | |
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. | |
2) fakkel.nn.BatchNorm2d | Den brukes til å bruke batch-normalisering over en 4D. | |
3) fakkel.nn.BatchNorm3d | Den brukes til å bruke batch-normalisering over 5D-innganger. | |
4) torch.nn.GroupNorm | Den brukes til å bruke gruppenormalisering over en mini-batch med innganger. | |
5) torch.nn.SyncBatchNorm | Den brukes til å bruke batch-normalisering over n-dimensjonale innganger. | |
6) torch.nn.InstanceNorm1d | Den brukes til å bruke en forekomstnormalisering over en 3D-inngang. | |
7) torch.nn.InstanceNorm2d | Den brukes til å bruke en instansnormalisering over en 4D-inngang. | |
8) torch.nn.InstanceNorm3d | Den brukes til å bruke en instansnormalisering over en 5D-inngang. | |
9) fakkel.nn.LayerNorm | Den brukes til å bruke lagnormalisering over en mini-batch med innganger. | |
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: | |
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: | |
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: 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: | |
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å under 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. | |
2) torch.nn.PairwiseDistance | Den beregner den batchvise parvise avstanden mellom vektorene v1, v2 ved å bruke p-normen: | |
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: | |
12) torch.nn.MultiLabelMarginLoss | Den brukes til å lage et kriterium som optimerer et multi-klasse multi-klassifisering hengseltap mellom inngang x og utgang y. | |
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: | |
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. | |
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). | |
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. | |
17) torch.nn.MultiMarginLoss | Den brukes til å lage et kriterium som optimaliserer et multi-klasse klassifiseringshengseltap mellom inngang x og utgang y. | |
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