Präsentation von Keras 3 für R

Wir freuen uns, es Ihnen vorzustellen keras3die nächste Version des Keras R-Pakets. keras3 ist eine Rekonstruktion von oben nach unten {keras}Beibehaltung der beliebten Funktionen des Originals bei gleichzeitiger Verfeinerung und Vereinfachung der API auf der Grundlage wertvoller Erkenntnisse, die in den letzten Jahren gesammelt wurden.
Keras bietet ein umfassendes Toolkit zum Erstellen von Deep-Learning-Modellen in R: Es war noch nie einfacher, Deep-Learning-Modelle zu erstellen, zu trainieren, zu bewerten und bereitzustellen.
Einrichtung
So installieren Sie Keras 3:
install.packages("keras3")
library(keras3)
install_keras()
Was ist neu:
Dokumentation
Eine gute Dokumentation ist unerlässlich und wir haben hart daran gearbeitet, dies sicherzustellen keras3 verfügt heute und in Zukunft über eine hervorragende Dokumentation.
Keras 3 wird mit einer vollständigen Aktualisierung der Website geliefert: https://keras.posit.co. Dort finden Sie Anleitungen, Tutorials, Referenzseiten mit gerenderten Beispielen und eine neue Beispielgalerie. Alle Seiten und Referenzhandbücher sind auch über das integrierte Hilfesystem von R verfügbar.
In einem sich schnell entwickelnden Ökosystem wie Deep Learning reicht es nicht aus, nur einmal hochwertige Dokumentation und Wrapper zu erstellen. Es sollten auch Arbeitsabläufe vorhanden sein, die sicherstellen, dass die Dokumentation mit den Upstream-Abhängigkeiten auf dem neuesten Stand ist. Zu diesem Zweck enthält {keras3} zwei neue Maintainer-Funktionen, die sicherstellen, dass R-Dokumentation und Funktions-Wrapper auf dem neuesten Stand bleiben:
-
Wir machen jetzt Schnappschüsse der Upstream-Dokumentation und der API-Oberfläche. Mit jeder Veröffentlichung basiert die gesamte R-Dokumentation auf Upstream-Updates. Dieser Workflow stellt sicher, dass die gesamte R-Dokumentation (Anleitungen, Beispiele, Miniaturansichten und Referenzseiten) und R-Funktionssignaturen von vornherein auf dem neuesten Stand bleiben. Diese Snapshot- und Rebase-Funktionalität ist in einem neuen eigenständigen R-Paket, {doctether}, implementiert, das für R-Paketbetreuer nützlich sein kann, die die Dokumentation mit den Abhängigkeiten im Einklang halten müssen.
-
Alle Beispiele und Miniaturansichten können jetzt beim Erstellen eines Pakets ausgewertet und gerendert werden. Dadurch wird sichergestellt, dass in einem Release keine veralteten oder fehlerhaften Codebeispiele enthalten sind. Dies bedeutet auch, dass alle benutzerseitigen Codebeispiele jetzt zusätzlich als erweiterte Snapshot- und Integrations-Unit-Testsuite dienen.
Das Auswerten von Code in Miniaturansichten und Beispielen ist aufgrund der CRAN-Einschränkungen immer noch nicht zulässig. Wir umgehen die CRAN-Einschränkung, indem wir zusätzliche Verpackungsschritte hinzufügen, die Beispiele und Miniaturansichten vorab rendern.
Zusammengenommen werden es diese beiden Funktionen für Keras in R erheblich einfacher machen, die Feature-Parität und die aktuelle Dokumentation mit der Keras-Python-API aufrechtzuerhalten.
Multi-Backend-Unterstützung
Kurz nach seiner Einführung im Jahr 2015 unterstützte Keras die beliebtesten Deep-Learning-Frameworks: TensorFlow, Theano, MXNet und CNTK. Im Laufe der Zeit hat sich die Landschaft verändert; Theano, MXNet und CNTK wurden eingestellt und TensorFlow gewann an Popularität. Im Jahr 2021, also vor drei Jahren, unterstützte TensorFlow als erster und einziger das Keras-Backend. Heute hat sich die Landschaft erneut verändert.
Keras 3 bringt die Rückkehr der Multi-Backend-Unterstützung. Wählen Sie ein Backend aus, indem Sie Folgendes anrufen:
use_backend("jax") # or "tensorflow", "torch", "numpy"
Das Standard-Backend bleibt TensorFlow, was heute für die meisten Benutzer die beste Wahl ist; Für kleine und mittlere Modelle ist dies immer noch das schnellste Backend. Allerdings hat jedes Backend unterschiedliche Stärken und die Möglichkeit, einfach zu wechseln, ermöglicht es Ihnen, sich an Änderungen anzupassen, wenn sich Ihr Projekt oder die Frameworks selbst weiterentwickeln.
Heutzutage kann der Wechsel zum Jax-Backend für bestimmte Modelltypen zu erheblichen Geschwindigkeitsverbesserungen führen. Jax ist außerdem das einzige Backend, das eine neue Trainings-API für verteilte Modellparallelität unterstützt. Der Wechsel zu Torch kann während der Entwicklung nützlich sein und führt beim Debuggen oft zu einfacheren Trackbacks.
Mit Keras 3 können Sie außerdem jedes bereits vorhandene Torch-, Jax- oder Flax-Modul mithilfe des entsprechenden Wrappers als Standard-Keras-Ebene integrieren, sodass Sie mit Keras auf vorhandenen Projekten aufbauen können. Trainieren Sie beispielsweise ein Torch-Modell mit der Keras High-Level-Training-API (compile() +
fit()) oder fügen Sie ein Flax-Modul als Teil einer größeren Keras-Vorlage ein. Durch die neue Multi-Backend-Unterstützung können Sie Keras à la carte nutzen.
Die „Ops“-Familie
{keras3} führt eine neue Familie von „Operations“-Funktionen ein. Die Ops-Familie, die derzeit über 200 Funktionen umfasst, bietet eine umfassende Suite von Operationen, die typischerweise beim Betrieb auf ND-Arrays für Deep Learning erforderlich sind. Die Operation-Familie ersetzt und erweitert die alte Familie von Backend-Funktionen mit dem Präfix „ k_ im {keras} Pack.
Mit Ops-Funktionen können Sie Backend-unabhängigen Code schreiben. Sie bieten eine einheitliche API, unabhängig davon, ob Sie mit TensorFlow-Tensoren, Jax-Arrays, Torch-Tensoren, symbolischen Keras-Tensoren, NumPy-Arrays oder R-Arrays arbeiten.
Ops-Funktionen:
- Alles beginnt mit einem Präfix
op_(Zum Beispiel,op_stack()) - das sind alles reine Funktionen (sie erzeugen keine Nebenwirkungen)
- Alle verwenden eine konsistente 1-basierte Indizierung und wandeln Doubles bei Bedarf in Ganzzahlen um
- Alle können sicher mit jedem Backend verwendet werden (Tensorflow, Jax, Torch, Numpy).
- Alle können sicher im Eile- und Grafik-/Jit-/Plot-Modus verwendet werden
Die Ops-API umfasst:
- Die gesamte NumPy-API (
numpy.*) - Die TensorFlow NN-API (
tf.nn.*) - Gemeinsame Funktionen der linearen Algebra (eine Teilmenge von
scipy.linalg.*) - Eine Unterfamilie von Bildtransformatoren
- Ein vollständiger Satz von Verlustfunktionen
- Und noch viel mehr!
Erfassen Sie tabellarische Daten mit layer_feature_space()
keras3 bietet einen neuen Satz von Funktionen zum Erstellen von Modellen, die Tabellendaten aufnehmen: layer_feature_space() und eine Familie von Merkmalstransformationsfunktionen (Präfix, feature_), um Keras-Modelle zu erstellen, die mit Tabellendaten arbeiten können, entweder als Eingaben für ein Keras-Modell oder als Vorverarbeitungsschritte in einer Datenladepipeline (z. B. a
tfdatasets::dataset_map()).
Weitere Informationen finden Sie auf der Referenzseite und einem Anwendungsbeispiel in einem vollständigen End-to-End-Beispiel.
Neue Unterklassen-API
Die Unterklassen-API wurde verfeinert und auf weitere Keras-Typen erweitert. Definieren Sie Unterklassen, indem Sie einfach Folgendes aufrufen: Layer(), Loss(), Metric(),
Callback(), Constraint(), Model()Und LearningRateSchedule(). Definieren {R6} Proxy-Klassen werden nicht mehr benötigt.
Darüber hinaus enthält die Dokumentationsseite für jede Unterklassenfunktion jetzt eine vollständige Liste aller für diesen Typ verfügbaren Attribute und Methoden. Überprüfen
?Layer um zu sehen, was möglich ist.
Sichern und exportieren
Keras 3 bringt eine neue Modellserialisierungs- und Export-API. Es ist jetzt viel einfacher, Modelle zu speichern und wiederherzustellen sowie sie zur Verteilung zu exportieren.
-
save_model()/load_model():
Ein neues High-Level-Dateiformat (Erweiterung:.keras), um ein vollständiges Modell zu speichern und wiederherzustellen.Das Dateiformat ist unabhängig vom Backend. Das bedeutet, dass Sie trainierte Modelle zwischen Backends konvertieren können, indem Sie sie einfach mit einem Backend speichern und dann mit einem anderen laden. Trainieren Sie beispielsweise ein Modell mit Jax und konvertieren Sie es dann für den Export in Tensorflow.
-
export_savedmodel():
Exportieren Sie nur den Vorwärtsdurchlauf eines Modells als kompiliertes Artefakt zur Inferenz mit TF Serving oder (bald) Posit Connect. Dies ist die einfachste Möglichkeit, ein Keras-Modell für einen effizienten, gleichzeitigen Inferenzdienst bereitzustellen, und das alles ohne R- oder Python-Laufzeitabhängigkeiten. -
Einstiegspunkte auf niedrigerer Ebene:
save_model_weights()/load_model_weights():
Notieren Sie nur die Gewichte als.h5Dateien.save_model_config()/load_model_config():
Speichern Sie die Modellarchitektur nur als JSON-Datei.
-
register_keras_serializable():
Registrieren Sie benutzerdefinierte Objekte, damit sie serialisiert und deserialisiert werden können. -
serialize_keras_object()/deserialize_keras_object():
Konvertieren Sie jedes Keras-Objekt in eine R-Liste einfacher Typen, die sicher in JSON oder RDS konvertiert werden können. -
Weitere Details und Beispiele finden Sie in der neuen Kachel „Serialisierung und Speicherung“.
Neu random Familie
Eine neue Familie von Zufallstensorgeneratoren. Wie die Ops-Familie funktionieren diese mit allen Backends. Darüber hinaus unterstützen alle Methoden, die RNG verwenden, die zustandslose Verwendung beim Übergeben eines Seed-Generators. Dies ermöglicht die Ablaufverfolgung und Kompilierung durch Frameworks, die speziell reine, zustandslose Funktionen unterstützen, wie z. B. Jax. Sehen
?random_seed_generator()
zum Beispiel Nutzung.
Weitere Ergänzungen:
-
Neu
shape()
Funktion, einzelnes Dienstprogramm für die Arbeit mit Tensorformen in allen Kontexten. -
Neu und verbessert
print(model)Undplot(model)Verfahren. Einige Beispielergebnisse finden Sie im Leitfaden zur funktionalen API -
Brandneu
fit()Fortschrittsbalken und Live-Metrik-Viewer-Ausgabe, einschließlich neuer Dark-Mode-Unterstützung in der RStudio-IDE. -
Neu
config
Familie, ein organisierter Satz von Funktionen zum Abrufen und Festlegen globaler Keras-Konfigurationen. -
Alle anderen Funktionsfamilien wurden um neue Mitglieder erweitert:
Migrieren von {keras} hat {keras3}
{keras3} ersetzt die {keras} Pack.
Wenn Sie heute neuen Code schreiben, können Sie mit der Verwendung beginnen {keras3} sofort.
Wenn Sie vorhandenen Code haben, der Folgendes verwendet: {keras}Wir empfehlen Ihnen, den Code auf zu aktualisieren {keras3}. Für viele High-Level-API-Funktionen, wie z layer_dense(), fit()Und keras_model()Es sind nur geringe oder keine Änderungen erforderlich. Es gibt jedoch eine lange Reihe kleiner Änderungen, die Sie möglicherweise vornehmen müssen, wenn Sie Code mit der Keras-API der unteren Ebene aktualisieren. Einige davon sind hier dokumentiert: https://keras.io/guides/migrating_to_keras_3/.
Wenn Sie auf Probleme stoßen oder Fragen zum Update haben, wenden Sie sich bitte an https://github.com/rstudio/keras/issues oder https://github.com/rstudio/keras/discussions.
DER {keras} Und {keras3} Pakete werden während des Community-Übergangs nebeneinander existieren. Während des Übergangs {keras} wird weiterhin Patch-Updates für die Kompatibilität mit Keras v2 erhalten, das weiterhin unter dem Paketnamen auf PyPi veröffentlicht wird tf-keras. Nach tf-keras wird nicht mehr gepflegt, die {keras} Das Paket wird archiviert.
Zusammenfassung
Zusammenfassend: {keras3} ist ein robustes Update des Keras R-Pakets, das neue Funktionen integriert und gleichzeitig die Benutzerfreundlichkeit und Funktionalität des Originals beibehält. Neue Multi-Backend-Unterstützung, eine vollständige Suite von Ops-Funktionen, eine verfeinerte Modellserialisierungs-API und aktualisierte Dokumentationsabläufe machen es Benutzern einfach, die neuesten Entwicklungen in der Deep-Learning-Community zu nutzen.
Egal, ob Sie ein erfahrener Keras-Benutzer sind oder gerade erst mit Deep Learning beginnen, Keras 3 bietet die Tools und die Flexibilität, um Modelle einfach und sicher zu erstellen, zu trainieren und bereitzustellen. Bei der Umstellung von Keras 2 auf Keras 3 sind wir bestrebt, die Community zu unterstützen und eine reibungslose Migration sicherzustellen. Wir laden Sie ein, neue Funktionen zu erkunden, aktualisierte Dokumentation zu lesen und an der Diskussion auf unserer GitHub-Diskussionsseite teilzunehmen. Willkommen zum nächsten Kapitel des Deep Learning in R mit Keras 3!
