Theano vs TensorFlow: Ein schneller Vergleich von Frameworks

Dieser Artikel über Theano vs TensorFlow bietet Ihnen einen kurzen und klaren Vergleich zwischen den beiden Frameworks und hilft Ihnen bei der Auswahl eines für Sie geeigneten Frameworks.

Die Ära von Tiefes Lernen und ist auf dem Höhepunkt. Es wird schaffen 2,3 Millionen Jobs bis 2020. TensorFlow und Theano sind seit einiger Zeit dort und erfreuen sich ebenfalls großer Beliebtheit. In diesem Artikel von Theano gegen TensorFlow werde ich die folgenden Themen behandeln:

Was ist Theano?

Theano kann als Bibliothek für definiert werden Wissenschaftliches rechnen . Es wurde von der Université de Montréal entwickelt und ist seit 2007 erhältlich.



theano-logo

Sie können damit mathematische Ausdrücke mit mehrdimensionalen Arrays effizient definieren, optimieren und auswerten. Es kann sowohl auf der CPU als auch auf der GPU ausgeführt werden.



Was ist TensorFlow?

TensorFlow ist eine Open-Source-Softwarebibliothek von Google Brain für die Datenflussprogrammierung für eine Reihe von Aufgaben.

Java, wie man das Programm beendet

Es ist eine symbolische Mathematikbibliothek, die für maschinelle Lernanwendungen wie verwendet wird .



Theano gegen TensorFlow

Wir werden Theano mit TensorFlow anhand der folgenden Metriken vergleichen:

Popularität:

Theano TensorFlow
Das ist ein altes Framework nicht so beliebt unter , Forscher. Es war einmalTensorFlow ist zweifellos der berühmteste Deep Learning Framework und wird in vielen Forschungsarbeiten verwendet.

Ausführungsgeschwindigkeit:

Theano TensorFlow
Führt Aufgaben schneller als TensorFlow aus. Besonders die einzelnen GPU-Aufgaben laufen in Theano sehr schnell.Die Ausführungsgeschwindigkeit von TensorFlow ist im Vergleich zu Theano langsamer, übernimmt jedoch bei Multi-GPU-Aufgaben die Führung.

Technologische Vorteile:

Theano TensorFlow
Es unterstützt eine breite Palette von Operationen.

Theano berechnet den Gradienten bei der Bestimmung der Error.

Sie haben die volle Kontrolle über Optimierer, da Sie diese fest codieren müssen.

TensorFlow muss Theano noch ebenbürtig sein.

Dies ist bei TensorFlow nicht der Fall

Es bietet sofortigen Zugriff auf viele gute Optimierer. Das macht das Codieren einfacher

Kompatibilität:

Theano TensorFlow
Keras, eine erstaunliche Deep Learning Library, ist mit Theano kompatibel. Es lässt sich gut integrieren.

Es hat native Windows-Unterstützung.

Es unterstützt auch High-Level-Wrapper wie Lasagne.

Aber im Fall von TensorFlow ist es noch nicht ganz da. In Version 2.0 ist dies jedoch nicht der Fall.

Derzeit fehlt TensorFlow diese Unterstützung.

Keine Unterstützung für Lasagne.

Gemeinschaftliche Unterstützung:

Theano TensorFlow
Theano hat eine größere Community-Unterstützung als vor TensorFlow.

Es hat mehr Dokumentation als TensorFlow

Der Online-Community-Support von TensorFlow nimmt mit seiner Popularität rapide zu.

Unterschied zwischen HTML und XML

Die Dokumentation ist vergleichsweise geringer.

Lesbarkeit des Codes:

Vergleichen wir Theano mit TensorFlow anhand ihres Codes. Hier nehme ich ein grundlegendes Beispielskript, in dem wir einige falsche Daten verwenden und die beste Anpassung für diese Daten initialisieren, damit zukünftige Datenpunkte vorhergesagt werden können.

Theano Code:

SQL Server Tutorial für Anfänger
importiere theano importiere theano.tensor als T importiere numpy # Wieder mache 100 Punkte in numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Initialisieren Sie das Theano-Modell X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1.0, 1.0, (1, 2)), name = 'W') y = W.dot (X) + b # Berechnen Sie die Gradienten WRT den mittleren quadratischen Fehler für jeden Parameter cost = T.mean (T.sqr (y - Y)) GradientW = T.grad (Kosten = Kosten, wrt = W) GradientB = T.grad (Kosten = Kosten, wrt = b) Aktualisierungen = [[W, W - GradientW * 0.5], [b, b - GradientB * 0.5]] train = theano.function (Eingänge = [X, Y], Ausgaben = Kosten, Updates = Updates, allow_input_downcast = True) für i in xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Äquivalenter TensorFlow-Code:

Tensorflow als tf importieren numpy als np importieren # 100 falsche Datenpunkte in NumPy erstellen. x_data = np.float32 (np.random.rand (2, 100)) # Zufällige Eingabe y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Konstruieren Sie ein lineares Modell. b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1,0, 1,0)) y = tf.matmul (W, x_data) + b # Minimieren Sie die quadratischen Fehler. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Zum Initialisieren der Variablen. init = tf.initialize_all_variables () # Starten Sie das Diagramm sess = tf.Session () sess.run (init) # Passen Sie die Ebene an. für Schritt in x-Bereich (0, 201): sess.run (Zug), wenn Schritt% 20 == 0: Druckschritt, sess.run (W), sess.run (b) # Lernt, dass die beste Anpassung W ist: [[0.100 0,200]], b: [0,300]

Länge weise Sowohl der Kodex ist fast Ähnlich Es gibt keinen großen Unterschied. Zwei identisch generiert Arrays, die die Eingabe und die Zielausgabe beschreiben. Aber wenn wir uns die Modellinitialisierung ansehen.

Modellinitialisierung:

# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1,0, 1,0)) y = tf.matmul (W, x_data) + b # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .uniform (-1,0, 1,0, (1, 2)), name = 'W') y = W.dot (X) + b

Wie Sie hier sehen können, erfordert TensorFlow keine spezielle Behandlung von X- und Y-Variablen. Andererseits erfordert Theano einen zusätzlichen Aufwand, um sicherzustellen, dass die Variablen vorhanden sind Symbolische Eingänge zur Funktion. Die Definition von b und W ist erklärend und auch schöner.

Das Lernen: Optimierung

# Tensorflow-Verlust = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T. bedeutet (T.sqr (y - Y)) # (1) GradientW = T.grad (Kosten = Kosten, wrt = W) # (2) GradientB = T.grad (Kosten = Kosten, wrt = b) # (2) Aktualisierungen = [[W, W - GradientW * 0,5], [b, b - GradientB * 0,5]] # (2) Zug = theano.function (Eingaben = [X, Y], Ausgaben = Kosten, Aktualisierungen = Updates, allow_input_downcast = True) # (3)

Für (1) die MSE ist fast das gleiche für Theano vs TensorFlow.

Für (2) Definieren der Optimierer ist einfach und unkompliziert, wie es bei TensorFlow der Fall ist, aber Theanno bietet Ihnen viel Kontrolle über die Optimierer, obwohl es ziemlich langwierig ist und den Überprüfungsaufwand erhöht.

Für 3) Trainingsfunktion Der Code ist fast ähnlich

Trainingskörper:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) für Schritt in xrange (0, 201): sess.run (Zug) # Theano für i in xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Der Code für das Training ist nahezu identisch, die Kapselausführung im Sitzungsobjekt jedoch Konzeptionell sauberer als Theano.

Endgültiges Urteil: Theano gegen TensorFlow

Abschließend kann gesagt werden, dass beide APIs eine haben ähnliche Schnittstelle . Aber TensorFlow ist vergleichsweise Einfacher Sie verwenden, da es viele Überwachungs- und Debugging-Tools bietet. Theano übernimmt die Führung Benutzerfreundlichkeit und Geschwindigkeit TensorFlow eignet sich jedoch besser für die Bereitstellung. Papierkram oder Dokumentation Denn Theano ist mehr als TensorFlow und TensorFlow ist eine neue Sprache. Die Menschen haben zunächst nicht viele Ressourcen. Open-Source-Deep-Libraries wie Keras, Lasagne und Blocks wurden gebaut auf Theano.

Ich hoffe, dieser Vergleich hat ausgereicht, um zu entscheiden, für welches Framework Sie sich entscheiden möchten von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Diese Zertifizierungsschulung wird von Branchenfachleuten gemäß den Anforderungen und Anforderungen der Branche kuratiert. Sie beherrschen die Konzepte wie SoftMax-Funktion, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) und arbeiten mit Bibliotheken wie Keras & TFLearn.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren von 'Theano vs TensorFlow' und wir werden uns bei Ihnen melden.