Ein verständlicher Einstieg in Generative Adversarial Networks
E-Book, Deutsch, 216 Seiten
ISBN: 978-3-96010-394-3
Verlag: O'Reilly
Format: EPUB
Kopierschutz: 6 - ePub Watermark
Dieses Buch richtet sich an alle, die selbst ausprobieren möchten, wie GANs funktionieren. Tariq Rashid zeigt Ihnen Schritt für Schritt, wie Sie mit dem populären Framework PyTorch Ihre eigenen GANs erstellen und trainieren. Sie starten mit einem sehr einfachen GAN, um einen Workflow einzurichten, und üben erste Techniken anhand der MNIST-Datenbank ein. Mit diesem Wissen programmieren Sie dann ein GAN, das realistische menschliche Gesichter erzeugen kann. Tariq Rashids besondere Fähigkeit, komplexe Ideen verständlich zu erklären, macht das Buch zu einer unterhaltsamen Lektüre.
Tariq Rashid ist Physiker, hat einen Master in Machine Learning und Data Mining und leitet die Londoner Python-Meetup-Gruppe mit 3.000 Mitgliedern. Er ist ein Verfechter des Open-Source-Gedankens und konnte eine Open-Source-Reform für die britische Regierung durchführen. Er ist der Überzeugung, dass immer noch zu viele wichtige Ideen schlecht erklärt werden. Seine persönliche Mission ist es, spannende, aber komplexe technische Konzepte besser zu vermitteln.
Weitere Infos & Material
KAPITEL 1
Grundlagen von PyTorch
In meinem letzten Buch Neuronale Netze selbst programmieren haben wir einfache, aber effektive neuronale Netze erstellt, und zwar ausschließlich mit Python und der Bibliothek NumPy für das Verarbeiten von Datenarrays. Auf beliebte Frameworks wie PyTorch und TensorFlow für das Erstellen von neuronalen Netzen haben wir verzichtet, weil es wichtig war, die Netze von Grund auf neu aufzubauen, um ihre Funktionsweise wirklich zu verstehen. Diese ganze Arbeit, die wir zu Fuß erledigen mussten, macht deutlich, dass der Aufbau größerer Netzwerke eine mühsame Aufgabe werden könnte. Einer der aufwendigsten Bereiche ist die Berechnung der Beziehung zwischen dem Fehler, der durch Backpropagation zurückgegeben wurde, und den Gewichten in unserem Netz. Wenn wir das Netz verändern, müssen wir möglicherweise die gesamte Arbeit noch einmal absolvieren. Hier werden wir PyTorch einsetzen, weil uns diese Bibliothek eine Menge Routinearbeiten abnimmt, sodass wir uns auf den Entwurf unserer Netze konzentrieren können. Zu den leistungsfähigsten und komfortabelsten Features von PyTorch gehört, dass die Bibliothek sämtliche Berechnungen für uns erledigt, egal welche Gestalt oder Größe das Netz hat, das wir uns ausdenken. Und wenn wir das Design unseres Netzes verändern, passt PyTorch die Berechnungen automatisch an, ohne dass wir Bleistift und Papier auspacken müssen, um die Gradienten erneut zu berechnen. Außerdem hat man sich bei PyTorch wirklich sehr darum bemüht, dem Look-and-feel von normalem Python zu entsprechen. Das bedeutet, es ist leicht zu erlernen, wenn Sie Python bereits kennen, und es gibt weniger Überraschungen, wenn Sie damit arbeiten. Google Colab
Wir haben im Buch Neuronale Netze selbst programmieren Code mithilfe der webbasierten Python-Notebooks geschrieben, die auf unserem eigenen Computer gelaufen sind. Jetzt verwenden wir Python-Notebooks, die der kostenlose Dienst Colab von Google bereitstellt und die unseren Code auf den Google-eigenen Computern ausführen. Der Zugriff auf Colab-Dienste von Google erfolgt gänzlich über einen Webbrowser. Es ist nicht erforderlich, irgendwelche Software auf dem eigenen Computer oder Laptop zu installieren. Bevor wir loslegen, sollten Sie sich mit einem Google-Konto anmelden. Wenn Sie über ein Gmail- oder YouTube-Konto verfügen, ist dies Ihr Google-Konto. Haben Sie noch kein Google-Konto eingerichtet, können Sie eines über den folgenden Link erstellen: https://accounts.google.com/signup Sobald Sie angemeldet sind, aktivieren Sie den Colab-Dienst von Google, indem Sie den diesen Link besuchen: https://colab.research.google.com Von dieser Seite aus gelangen Sie zu einem Beispiel-Python-Notebook. Wählen Sie im Menü File den Eintrag New Python 3 notebook, um ein neues Notebook anzulegen (siehe Abbildung 1-1). Abbildung 1-1: Die Startseite von Google Colab Es erscheint ein leeres Python-Notebook (siehe Abbildung 1-2), das wir sofort verwenden können. Abbildung 1-2: Ein neues leeres Python-Notebook Wenn Sie sich auf einem separaten Browser-Tab den Google-Dateispeicher Drive ansehen, finden Sie einen neuen Ordner namens Colab Notebooks. Dies ist der Ordner, in dem neue Python-Notebooks standardmäßig gespeichert werden. Abbildung 1-3 zeigt ein neues Notebook mit dem Namen Untitled0.ipynb. Abbildung 1-3: Ein neues Notebook mit dem Namen »Untitled0.ipynb« Wir überprüfen nun, ob wir Python-Code ausführen können. Tippen Sie in die erste Zelle den folgenden einfachen Code ein: 2 + 3 Klicken Sie auf die Schaltfläche mit dem Abspielen-Symbol links neben der Zelle, um den Code auszuführen. Wenn Sie den Colab-Dienst bisher noch nicht genutzt haben, kann es eine Weile dauern, bis die erste Python-Anweisung ausgeführt wird, da Google einen Moment braucht, um eine virtuelle Maschine zu starten und Ihr Notebook mit ihr zu verbinden. Schließlich sollte die Antwort 5 erscheinen, wie Abbildung 1-4 zeigt. Abbildung 1-4: Das Ergebnis des ausgeführten Codes Großartig! Alles funktioniert, und wir sind bereit, mehr über PyTorch zu erfahren. PyTorch-Tensoren
Bevor wir PyTorch verwenden können, müssen wir das Python-Modul torch importieren. Erfreulicherweise hält der Colab-Service von Google viele dieser beliebten Bibliotheken für maschinelles Lernen für uns bereit, PyTorch eingeschlossen. Wir müssen die Bibliotheken nur noch importieren, um sie unmittelbar einsetzen zu können. Es ist nicht erforderlich, einen komplizierten Installationsprozess zu durchlaufen. Geben Sie den folgenden Code in die erste Zelle ein und führen Sie ihn aus: import torch Um PyTorch zu verstehen, bietet es sich an, seine grundlegenden Informationseinheiten mit reinem Python zu vergleichen. In reinem Python speichern wir Zahlen in Variablen. Diese Variablen können wir wie mathematische Symbole verwenden, um neue Werte zu berechnen und diese in neuen Variablen zu speichern, wenn wir das wünschen. Sehen Sie sich dazu den folgenden einfachen Python-Code an: # Normale Python-Variablen x = 3.5 y = x*x + 2 print(x, y) Wir erzeugen eine Variable x und geben ihr den Wert 3.5. Dann erzeugen wir eine neue Variable y und geben ihr einen Wert, der aus dem Ausdruck x*x + 2 berechnet wird, was (3.5*3.5) + 2 oder 14.25 ist. Schließlich geben wir die Werte von x und y aus. Tippen Sie den Code in eine neue Zelle ein und führen Sie ihn aus. Abbildung 1-5 zeigt, wie das Ergebnis aussehen sollte. Abbildung 1-5: Die Verwendung einer Variablen PyTorch hat eine eigene Form von Variablen, um Zahlen zu speichern – die sogenannten PyTorch-Tensoren. Mit den folgenden Anweisungen erstellen Sie einen sehr einfachen Tensor: # Einfacher PyTorch-Tensor x = torch.tensor(3.5) print(x) Wir erzeugen hier etwas, das x genannt wird. Dieses x ist ein PyTorch-Tensor, der mit dem Wert 3.5 initialisiert wird. Geben Sie den Code ein und führen Sie ihn aus, um zu sehen, was die Ausgabe von x bewirkt. Abbildung 1-6: Einen PyTorch-Tensor erzeugen und ausgeben Die Ausgabe zeigt, dass der numerische Wert 3.5000 beträgt, aber auch, dass er in einem PyTorch-tensor enthalten ist. Es ist nützlich zu wissen, in welcher Art von Container diese Zahl gespeichert ist. Führen wir nun einige einfache arithmetische Berechnungen mit diesem Tensor aus. Geben Sie in die nächste Zelle den folgenden Code ein: # Einfache Arithmetik mit Tensoren y = x + 3 print(y) Hier erzeugen wir aus dem Ausdruck x + 3 eine neue Variable y. Eben haben wir x als PyTorch-Tensor mit dem Wert 3.5 erzeugt. Welchen Wert wird also y haben? Probieren Sie es aus. Abbildung 1-7: Arithmetik mit einem Tensor Wie Abbildung 1-7 zeigt, hat y den Wert 6.5, was Sinn ergibt, denn 3.5 + 3 = 6.5. Außerdem sehen wir, dass y ebenfalls ein PyTorch-Tensor ist. Sicherlich erinnern Sie sich daran, dass auch NumPy-Arrays in der gleichen Weise funktionieren. Diese Vertrautheit kommt uns entgegen, und durch die Übereinstimmung mit NumPy ist es zudem einfacher, PyTorch zu erlernen. Automatische Gradienten mit PyTorch
Sehen wir uns nun an, wie sich PyTorch von reinem Python und NumPy abhebt und es so besonders macht. Der folgende Code erzeugt genau wie zuvor einen Tensor x, dieses Mal aber geben wir PyTorch eine zusätzliche Option requires_grad= True mit. Wir werden bald sehen, was diese Option bewirkt. # PyTorch-Tensor x = torch.tensor(3.5, requires_grad=True) print(x) Führen Sie den Code aus und sehen Sie sich an, was für x ausgegeben wird (siehe Abbildung 1-8). Abbildung 1-8: Eine Tensoroperation mit einer...