[Snel leren] Inleiding tot Pytorch (XNUMX): Implementeer MLP-regressie en leer de basisprincipes van PyTorch
De vorige keer heb ik besproken hoe ik met de fakkel moet omgaan, wat de basis is van PyTorch.
Deze keer wil ik Multilayer perceptron (MLP) -regressie implementeren in PyTorch en de belangrijkste PyTorch-pakketten bekijken.
Algehele stroom
De algehele stroom van modelimplementatie is als volgt. De nummers tussen haakjes zijn de PyTorch-pakketten die op dat moment werden gebruikt.
- Aanmaken van invoergegevensset, iteratieve verwerking (Dataset, Dataloader)
- Definitie van neuraal netwerk (nn. Module)
- Verliesberekening, gradiënt gepropageerd naar netwerkparameters (nr. Module)
- Update netwerkgewichten (Optimaizer)
Grote PyTorch-pakketten
Ongeacht PyTorch bieden veel deep learning-frameworks verschillende pakketten om de implementatie te vereenvoudigen. De belangrijkste items in PyTorch zijn:
toorts. sensor | Multidimensionale reeks. Gegevensstructuur gebruikt in PyTorch. |
fakkel.autograd | Implementeer voorwaartse / achterwaartse voortplanting.Ondersteunt automatische differentiatie voor Tensor, zoals achterwaartse propagatie (backward ()). |
zaklamp.utils.data | Het bevat hulpprogramma's zoals "Dataset" die de in te voeren gegevens en het label ervan als een set verzamelt, en "Dataloader" die gegevens uit de Dataset in een minibatch haalt en aan het model doorgeeft. |
zaklamp.nn.Module | Wordt gebruikt voor het bouwen van neurale netwerken.Verantwoordelijk voor parameterinkapseling zoals opslaan en laden van modellen en verhuizen naar GPU. |
fakkel.optim | Hiermee kunt u algoritmen voor parameteroptimalisatie gebruiken, zoals SDG en Adam. |
Model implementatie
Een dataset maken
Deze keer zullen we sin (5x) plus willekeurige getallen voorbereiden als oefengegevens met numpy.from_numpy()
Omzetten naar torch.tensor met.
Model definitie
In pytorch wordt het model gedefinieerd als een "python class" die erft van de nn.Module class.
klasse MLP (nn.Module): De gedefinieerde MLP-klasse erft van de bovenliggende klasse nn.Module
def init (): Ontvangt argumenten en instantiëert
super (MLP, zelf) .init (): Overnemen bovenliggende klasse met superfunctie
def vooruit (zelf, x): Werkt wanneer de functie wordt aangeroepen na instantiatie. Wanneer u de voorwaartse functie definieert, wordt ook de achterwaartse functie (hellingsberekening) automatisch gedefinieerd.
.parameters()
U kunt de structuur en parameters van het netwerk ophalen met.
Verliesberekening / backpropagation / gewichtsupdate
Om het individuele gedrag te begrijpen, nemen we een stukje gegevens van x en voeren dit in het neurale netwerk in om te zien hoe de parameters veranderen als gevolg van foutberekeningen en gewichtsupdates.
Probeer de leerlus om te draaien
Voer de bovenstaande stroom uit voor elke batch om het neurale netwerk te trainen.Dataset
Retourneert een set gegevens en het bijbehorende label,DataLoader
Is een klasse die gegevens in batchgrootte retourneert.
Visualisatie van rekengrafiek
De structuur van de drielaagse MLP die deze keer is gemaakt, kan worden gevisualiseerd met behulp van een python-pakket genaamd torchviz.parameters()
Alsjeblieft als het niet genoeg is.
Tot nu toe hebben we PyTorch en zijn belangrijkste PyTorch-pakketten geïdentificeerd door de implementatie van MLP-regressie.
discussie
Lijst met opmerkingen
Er zijn nog geen reacties