Was bietet TensorFlow Keras noch?

16

Ich bin mir bewusst, dass Keras als High-Level-Schnittstelle zu TensorFlow dient.

Aber es scheint mir, dass Keras viele Funktionen selbst ausführen kann (Dateneingabe, Modellerstellung, Schulung, Bewertung).

Darüber hinaus kann ein Teil der TensorFlow-Funktionalität direkt auf Keras portiert werden (z. B. ist es möglich, eine tf-Metrik oder eine Verlustfunktion in Keras zu verwenden).

Meine Frage ist, was TensorFlow bietet, das nicht in Keras reproduziert werden kann?

Javier
quelle

Antworten:

15

Deep Learning Frameworks arbeiten auf zwei Abstraktionsebenen:

  • Untere Ebene : Hier sitzen Frameworks wie Tensorflow, MXNet, Theano und PyTorch. Auf dieser Ebene werden mathematische Operationen wie die Verallgemeinerte Matrix-Matrix-Multiplikation und neuronale Netzprimitive wie Faltungsoperationen implementiert.
  • Höhere Ebene : Hier sitzen Frameworks wie Keras. Auf dieser Ebene werden die Primitive der unteren Ebene verwendet, um die Abstraktion des neuronalen Netzwerks wie Ebenen und Modelle zu implementieren. In der Regel werden auf dieser Ebene auch andere hilfreiche APIs wie Modellspeicherung und Modelltraining implementiert.

Sie können Keras und TensorFlow nicht vergleichen, da sie sich auf verschiedenen Abstraktionsebenen befinden. Ich möchte diese Gelegenheit auch nutzen, um meine Erfahrungen mit Keras zu teilen:

  • Ich stimme nicht zu, dass Keras nur für grundlegende Deep-Learning-Aufgaben nützlich ist. Keras ist eine wunderschön geschriebene API. Die Funktionsweise der API hilft Ihnen dabei und macht es Ihnen unmöglich, exotischere Anwendungen zu finden. Keras blockiert nicht den Zugriff auf Frameworks niedrigerer Ebene.
  • Keras führt zu viel besser lesbarem und prägnanterem Code.
  • Keras-Modell Serialisierungs- / Deserialisierungs-APIs, Rückrufe und Daten-Streaming mit Python-Generatoren sind ausgereift.
  • Keras wurde zur offiziellen High-Level-Abstraktion für TensorFlow erklärt.
Kätzchen
quelle
9

Wenn Sie TensorFlow als Backend in Keras verwenden, haben diese mehr oder weniger dieselbe Funktionalität. Durch keras.backendSie funktioniert ein Zugang zu TensorFlow, während tf.kerasSie über TensorFlow Zugriff auf die gesamte API von Keras haben.

Da dies der Fall ist, schlage ich vor, dass Sie bei Keras bleiben und wenn Sie feststellen, dass etwas fehlt (z. B. eine Metrik oder eine Verlustfunktion), können Sie es über TensorFlow importieren.

TmBrdy
quelle
5

Keras enthält, wie Sie sagen, alle Funktionen, läuft jedoch standardmäßig nur auf der CPU. Wenn Sie ein Backend wie TensorFlow oder CNTK (das ich persönlich bevorzuge) anschließen, können Sie die Leistung der GPU freischalten, die einige ML-Workloads, insbesondere DL-Workloads, erheblich beschleunigen kann. Wenn Sie keine diskrete GPU haben, sind die Vorteile minimal.

Die meiste Zeit in der Praxis können Sie einfach Ihr Backend einstellen und es vergessen und vollständig in Keras arbeiten. Sie können sogar Ihr Backend gegen ein anderes austauschen und die Leistung vergleichen. Es ist daher nicht erforderlich, die Besonderheiten von TF zu lernen, es sei denn, Sie möchten direkt auf einer niedrigeren Ebene codieren.

Gaius
quelle
5

Angesichts der Tatsache, dass TensorFlow eine Bibliothek auf niedrigerer Ebene ist als Keras im Allgemeinen, bietet dies zusätzliche Flexibilität und verbesserte Leistung (auch wenn dies relativ geringfügig ist, hängt dies hauptsächlich davon ab, wie Sie Ihren Code schreiben). Ich würde sagen, wenn Sie in der Forschung oder Entwicklung neuer Arten von neuronalen Netzen sind, wäre das Wissen über TensorFlow sehr nützlich. Abgesehen davon sollten Sie mit Keras zurechtkommen, obwohl es hilfreich sein kann, zu verstehen, wie TensorFlow funktioniert, wenn Sie es als Backend verwenden.

Vor einiger Zeit habe ich jedoch gelesen, dass Keras und TensorFlow sich stärker integrieren werden, was Ihnen das Leben erheblich erleichtern würde.

Offensichtlich ist dies nur meine persönliche Ansicht, daher möchte ich Sie auf einige zusätzliche Artikel hinweisen, damit Sie selbst etwas lesen können. Diese Diskussion über Kaggle gibt einen guten Überblick über die Argumente und wann welche zu verwenden sind. Mittlerer Beitrag zu diesem Thema.

Felix van Doorn
quelle
5

Jeder Anfänger hat diese Abfrage. Es scheint immer so, als ob Keras die grundlegenden Funktionen wie Dateneingabe, Modellerstellung, Schulung und Auswertung in weniger Codezeilen löst.

Aber wenn Sie anfangen, ein ML-Modell von Grund auf neu zu entwickeln, werden Sie feststellen, dass Sie eine Menge Mathematik in das NN programmieren können und die Tensorflow-Bibliothek viele Funktionen und Steuerelemente bietet, die diese Konzepte praktisch machen. Die mathematischen Aspekte des Lernens können mit NN, das mit tf erstellt wurde, leicht visualisiert und erstellt werden.

abunickabhi
quelle