Читать книгу PyTorch für Deep Learning - Ian Pointer - Страница 9
Warum nicht TensorFlow?
ОглавлениеGenau, richten wir unseren Blick auf das ziemlich große von Google konzipierte Schwergewicht in der gegenüberliegenden Ecke. Was bietet PyTorch, was TensorFlow nicht bieten kann? Warum sollten Sie stattdessen PyTorch lernen?
Die Antwort ist, dass das traditionelle TensorFlow anders funktioniert als PyTorch, was erhebliche Auswirkungen auf den Code und die Fehlersuche mit sich bringt. In TensorFlow verwenden Sie die Bibliothek, um eine Graphendarstellung der Architektur des neuronalen Netzwerks aufzubauen, und führen dann Operationen auf diesem Graphen aus, was innerhalb der TensorFlow-Bibliothek geschieht. Diese Methode der deklarativen Programmierung steht im Widerspruch zum imperativen Paradigma von Python, was bedeutet, dass TensorFlow-Programme in Python etwas seltsam und schwer verständlich aussehen und sich auch so anfühlen können. Das andere Problem ist, dass im Vergleich zum Ansatz mit PyTorch die statische Graphendeklaration die dynamische Änderung der Architektur während der Trainings- und Inferenzphase sehr viel komplizierter macht und mit Boilerplate-Code vollstopfen kann.
Aus diesen Gründen ist PyTorch in den forschungsorientierten Fachkreisen populär geworden. Die Anzahl der bei der »International Conference on Learning Representations« eingereichten Beiträge, in denen PyTorch erwähnt wird, ist im letzten Jahr um 200% gestiegen. Die Anzahl der Beiträge, in denen TensorFlow erwähnt wird, hat fast genauso stark zugenommen. PyTorch wird mit Sicherheit auch in Zukunft eine Rolle spielen.
Mit dem Erscheinen neuerer Versionen von TensorFlow änderten sich die Dinge jedoch ein wenig. Eine neue Funktion namens Eager Execution, die es ermöglicht, ähnlich wie mit PyTorch zu arbeiten, wurde unlängst der Bibliothek hinzugefügt. Das wird auch das Paradigma sein, das in TensorFlow 2.0 vorangetrieben wird. Da jedoch nur wenige neue Informationsmaterialien außerhalb von Google zur Verfügung stehen, die Ihnen helfen, diese neue Arbeitsweise mit TensorFlow zu erlernen, sind die Möglichkeiten sehr begrenzt. Sie müssten jahrelang daran arbeiten, um das andere Paradigma zu verstehen, damit Sie das Beste aus der Bibliothek herausholen können.
Aber nichts davon sollte Ihnen ein schlechtes Bild von TensorFlow vermitteln; es bleibt eine industrieerprobte Bibliothek, die durch eines der größten Unternehmen der Welt gefördert wird. PyTorch (natürlich ebenfalls gestützt durch eine andere »größte Firma der Welt«) ist, würde ich sagen, ein rationalisierter und fokussierterer Ansatz für Deep Learning und differenzielle Programmierung. Da keine älteren, eingestaubten APIs mehr unterstützt werden müssen, ist es leichter, in PyTorch zu lehren und produktiv zu werden als in TensorFlow.
Wie hängt Keras damit zusammen? So viele gute Fragen! Keras ist eine übergeordnete Deep-Learning-Bibliothek, die ursprünglich Theano und TensorFlow und nun auch andere Frameworks wie Apache MXNet unterstützt. Sie bietet bestimmte Funktionen wie Trainings-, Validierungs- und Testroutinen, deren Erstellung die untergeordneten Frameworks sonst dem Entwickler überlassen, sowie einfache Methoden zum Aufbau von neuronalen Netzwerkarchitekturen. Sie hat enorm zur Verbreitung von TensorFlow beigetragen, ist jetzt Teil von TensorFlow selbst (als tf.keras) und wird auch weiterhin ein eigenständiges Projekt bleiben. Im Vergleich dazu ist PyTorch so etwas wie der Mittelweg zwischen reinem TensorFlow und Keras; wir werden unsere eigenen Trainings- und Vorhersageroutinen schreiben müssen, aber das Erstellen von neuronalen Netzwerken ist fast genauso einfach (und meiner Meinung nach ist der Ansatz von PyTorch zur Erstellung und Wiederverwendung von Architekturen für einen Python-Entwickler bedeutend logischer als der bei Keras).
Wie Sie in diesem Buch noch sehen werden, ist PyTorch seit der Einführung von Version 1.0, obwohl es in eher forschungsorientierten Kreisen verbreitet ist, perfekt für Anwendungsfälle im Produktiveinsatz geeignet.