Machine Learning: Keras künftig ausschließlich auf TensorFlow ausgerichtet
Version 2.3 der Deep-Learning-Bibliothek läutet das Ende des Multi-Backend-Daseins von Keras ein: Die Zukunft liegt aus Sicht des Initiators in tf.keras.
Die Bibliothek für neuronale Netze Keras ist in Version 2.3 erschienen. Das Release bringt einige API-Erweiterungen, markiert aber vor allem einen Wendepunkt in der Weiterentwicklung: Es soll das letzte Feature-Release sein, das mehrere Backends unterstützt. Die Zukunft des Projekts sieht der Initiator von Keras, François Chollet, in der auf TensorFlow zugeschnittenen Variante tf.keras.
Bei der Entwicklung des aktuellen Keras-Release lag der Fokus bereits auf der Anpassung an TensorFlow 2.0 und den Abgleich der API mit tf.keras. Google hatte im Rahmen des TensorFlow Dev Summit 2019 im März bereits angekündigt, dass Keras künftig die Rolle der Standard-High-Level-API für TensorFlow zukommen soll.
Einige Ergänzungen in der API
Zu den Neuerungen bei der API gehört die Funktion size(x)
in der Backend-API. Layer und Model bekommen die Methode add_metric
, die sich analog zu add_loss
für einen verwenden lässt, aber einen Metrik-Tensor statt eines Loss-Tensors für eine benutzerdefinierte Verlustfunktion festlegt.
Außerdem führt Keras 2.3 klassenbasierte Metriken ein, die von der Basisklasse Metric
abgeleitet sind, und klassenbasierte Verlustfunktionen, die von Loss
erben. Die Klassen entsprechen den Metrik- beziehungsweise Verlustfunktionen, die Entwickler bisher in Keras verwendet haben.
Einige Änderungen beziehungsweise Deprecations können zu Inkompatibilitäten führen. Unter anderem gelten die TensorBoard
-Callbacks batch_size
und write_grads
im Zusammenspiel mit TensorFlow 2 als überholt.
Mit voller Kraft für TensorFlow 2
Seit Version 1.4 von TensorFlow existiert Keras als Teil des Frameworks. Die Bibliothek ist bis zum aktuellen Release jedoch auch unabhängig vom Backend verfügbar und läuft unter anderem zusammen mit Microsofts Vorgänger zum Cognitive Toolkit CNTK und Theano. Keras ist kein eigenständiges Framework, sondern Chollet bezeichnet es als Interface zu bestehenden Machine-Learning-Frameworks, da vor allem auf eine intuitive Arbeitsweise und einfache Erweiterbarkeit ausgelegt ist.
Bisher hatte Chollet es stets als Schnittstelle für verschiedene Frameworks gesehen, aber die Zukunft liegt nun auf dem in TensorFlow 2 enthaltenen tf.keras. Chollet begründet auf Twitter die Fokussierung damit, dass die beiden anderen Frameworks nicht weiter entwickelt würden. Zudem setzten 96 Prozent der Keras-Nutzer auf TensorFlow als Backend und über die Hälfte davon bereits auf tf.keras.
Keras 2.3 ist daher das letzte Release mit neuen Features. Über die nächsten sechs Monate will das Team das Multi-Backend-Release weiter pflegen, sich dabei jedoch auf Bugfixes beschränken.
Empfehlung für den Umstieg
Auch wenn Keras 2.3 mit TensorFlow 2 zusammenarbeitet, ist es auf einige wichtige Neuerungen des Frameworks nicht ausgelegt. Allen voran fehlt die Unterstützung für die mit dem aktuellen Release eingeführte direkte Codeausführung (Eager Execution). Daher empfiehlt Chollet denjenigen, die TensorFlow 2 als Backend verwenden, den Umstieg auf tf.keras.
Weitere Details zu Keras 2.3 lassen sich den Release Notes auf GitHub entnehmen. Der Code findet sich im zugehörigen Repository. Trotz der Einbindung in TensorFlow soll die Weiterentwicklung von tf.keras künftig in einem eigenen Repository stattfinden, wie Chollet in einem Tweet verkündet hat:
Das Release von TensorFlow 2 lässt derweil noch auf sich warten. Die erste Alpha-Variante war im März erschienen, und der erste Release Candidate ist seit letzter Anfang September verfügbar. Nächste Woche wird heise Developer einen Fachartikel zu den Neuerungen in TensorFlow 2 bringen, dem das GA-Release des Frameworks hoffentlich bald folgen wird. (rme)