[Apprendimento rapido] Introduzione a Pytorch (XNUMX): implementare la regressione MLP e apprendere le basi di PyTorch

L'ultima volta ho esaminato come maneggiare la torcia, che è la base di PyTorch.

Questa volta, vorrei implementare la regressione Multilayer Percetron (MLP) in PyTorch e vedere i principali pacchetti PyTorch.

Flusso complessivo

Il flusso complessivo dell'implementazione del modello è il seguente. I numeri tra parentesi sono i pacchetti PyTorch usati in quel momento.

  • Creazione di dataset di input, elaborazione iterativa (Dataset, Dataloader)
  • Definizione di rete neurale (nn. Modulo)
  • Calcolo delle perdite, gradiente propagato ai parametri di rete (nn. Modulo)
  • Aggiorna i pesi di rete (Optimaizer)

Pacchetti principali di PyTorch

Indipendentemente da PyTorch, molti framework di deep learning offrono vari pacchetti per semplificare l'implementazione. Gli elementi principali di PyTorch sono:

torcia.tensoreMatrice multidimensionale. Struttura dati utilizzata in PyTorch.
torcia.autogradImplementa la propagazione in avanti / all'indietro.Supporta operazioni di differenziazione automatica per Tensor come la propagazione all'indietro (backward ()).
torcia.utils.dataInclude utilità come "Dataset" che raccoglie i dati da inserire e la relativa etichetta come set, e "Dataloader" che estrae i dati dal Dataset in un mini-batch e li passa al modello.
Torcia.nn.ModuloUtilizzato per la creazione di reti neurali.Responsabile dell'incapsulamento dei parametri come il salvataggio e il caricamento dei modelli e il passaggio alla GPU.
torcia.ottimConsente di utilizzare algoritmi di ottimizzazione dei parametri come SDG e Adam.
Pacchetti principali di PyTorch

Implementazione del modello

Creazione di un set di dati

Questa volta, prepareremo sin (5x) più numeri casuali come dati di pratica con numpy.from_numpy()Converti in torch.tensor con.

Definizione del modello

In pytorch, il modello è definito come una "classe python" che eredita dalla classe nn.Module.

classe MLP (nn.Module): La classe MLP definita eredita dalla classe padre nn.Module
def init (): Riceve argomenti e crea istanze
super (MLP, self) .init (): Eredita la classe genitore con una super funzione
def forward (self, x): Funziona quando la funzione viene chiamata dopo l'istanziazione. Quando si definisce la funzione avanti, viene definita automaticamente anche la funzione indietro (calcolo gradiente).

.parameters()È possibile ottenere la struttura e i parametri della rete con.

Calcolo delle perdite / ritropropagazione / aggiornamento del peso

Per comprendere il comportamento individuale, prenderemo un dato da x e lo inseriremo nella rete neurale per vedere come cambiano i parametri a causa di calcoli di errore e aggiornamenti di peso.

Prova a trasformare il ciclo di apprendimento

Eseguire il flusso sopra per ogni batch per addestrare la rete neurale.
DatasetRestituisce un insieme di dati e l'etichetta corrispondente,DataLoaderClasse che restituisce dati in dimensioni batch.

Visualizzazione del grafico di calcolo

La struttura dell'MLP a 3 strati creata questa volta può essere visualizzata utilizzando un pacchetto python chiamato torchviz.parameters()Per favore quando non è abbastanza.

Finora, abbiamo identificato PyTorch ei suoi principali pacchetti PyTorch attraverso l'implementazione della regressione MLP.