[Schnelles Lernen] Einführung in Pytorch (XNUMX): Implementieren Sie die MLP-Regression und lernen Sie die Grundlagen von PyTorch
Das letzte Mal habe ich überprüft, wie man mit Fackeln umgeht, die die Basis von PyTorch bilden.
Dieses Mal möchte ich die MLP-Regression (Multilayer Perceptron) in PyTorch implementieren und die wichtigsten PyTorch-Pakete sehen.
Gesamtdurchfluss
Der Gesamtablauf der Modellimplementierung ist wie folgt. Die Zahlen in Klammern sind die zu diesem Zeitpunkt verwendeten PyTorch-Pakete.
- Erstellung von Eingabedatensätzen, iterative Verarbeitung (Datensatz, Dataloader)
- Definition des neuronalen Netzwerks (nn.Module)
- Verlustberechnung, Gradient, der auf Netzwerkparameter übertragen wird (nn.Module)
- Netzwerkgewichte aktualisieren (Optimaizer)
Wichtige PyTorch-Pakete
Unabhängig von PyTorch bieten viele Deep-Learning-Frameworks verschiedene Pakete an, um die Implementierung zu vereinfachen. Die Hauptelemente in PyTorch sind:
fackel.tensor | Mehrdimensionales Array. In PyTorch verwendete Datenstruktur. |
fackel.autograd | Implementieren Sie Forward / Backpropagation.Unterstützt die automatische Differenzierungsoperation für Tensor, z. B. die Rückausbreitung (rückwärts ()). |
brenner.utils.data | Es enthält Dienstprogramme wie "Dataset", das die einzugebenden Daten und deren Bezeichnung als Satz sammelt, und "Dataloader", der Daten aus dem Dataset in einem Mini-Batch extrahiert und an das Modell weitergibt. |
Taschenlampe.nn.Modul | Wird zum Aufbau neuronaler Netze verwendet.Verantwortlich für die Parameterkapselung wie das Speichern und Laden von Modellen und die Umstellung auf die GPU. |
fackel.optim | Ermöglicht die Verwendung von Parameteroptimierungsalgorithmen wie SDG und Adam. |
Modellimplementierung
Erstellen eines Datensatzes
Dieses Mal werden wir sin (5x) plus Zufallszahlen als Übungsdaten mit numpy vorbereiten.from_numpy()
Konvertieren Sie in torch.tensor mit.
Modelldefinition
In pytorch wird das Modell als "Python-Klasse" definiert, die von der nn.Module-Klasse erbt.
Klasse MLP (nn.Module): Die definierte MLP-Klasse erbt von der übergeordneten Klasse nn.Module
def init (): Empfängt Argumente und instanziiert
super (MLP, self) .init (): Übergeordnete Klasse mit Superfunktion erben
def vorwärts (self, x): Funktioniert, wenn die Funktion nach der Instanziierung aufgerufen wird. Wenn Sie die Vorwärtsfunktion definieren, wird auch die Rückwärtsfunktion (Gradientenberechnung) automatisch definiert.
.parameters()
Sie können die Struktur und Parameter des Netzwerks mit abrufen.
Verlustberechnung / Backpropagation / Gewichtsaktualisierung
Um das individuelle Verhalten zu verstehen, nehmen wir ein Datenelement von x und geben es in das neuronale Netzwerk ein, um zu sehen, wie sich die Parameter aufgrund von Fehlerberechnungen und Gewichtsaktualisierungen ändern.
Versuchen Sie, die Lernschleife zu drehen
Führen Sie den obigen Ablauf für jede Charge aus, um das neuronale Netzwerk zu trainieren.Dataset
Gibt einen Datensatz und das entsprechende Etikett zurück.DataLoader
Ist eine Klasse, die Daten in Stapelgröße zurückgibt.
Visualisierung des Berechnungsgraphen
Die Struktur des diesmal erstellten 3-Layer-MLP kann mithilfe eines Python-Pakets namens torchviz visualisiert werden.parameters()
Bitte wenn es nicht reicht.
Bisher haben wir PyTorch und seine wichtigsten PyTorch-Pakete durch die Implementierung der MLP-Regression identifiziert.
Diskussion
Liste der Kommentare
Es gibt noch keine Kommentare