[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.tensore | Matrice multidimensionale. Struttura dati utilizzata in PyTorch. |
torcia.autograd | Implementa la propagazione in avanti / all'indietro.Supporta operazioni di differenziazione automatica per Tensor come la propagazione all'indietro (backward ()). |
torcia.utils.data | Include 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.Modulo | Utilizzato 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.ottim | Consente di utilizzare algoritmi di ottimizzazione dei parametri come SDG e Adam. |
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.Dataset
Restituisce un insieme di dati e l'etichetta corrispondente,DataLoader
Classe 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.
discussione
Elenco dei commenti
Non ci sono ancora commenti