Theano vs TensorFlow: Rychlé srovnání rámců



Tento článek o Theano vs TensorFlow vám poskytne krátké a ostré srovnání mezi těmito dvěma rámci a pomůže vám vybrat ten, který vám vyhovuje.

Éra Hluboké učení a je na vrcholu. Chystá se to vytvořit 2,3 milionu Pracovní místa do roku 2020. Každý měsíc přicházejí nové rámce a TensorFlow a Theano jsou tu již nějakou dobu a získaly také dobrou popularitu. Takže v tomto článku Theano vs TensorFlow budu diskutovat o následujících tématech:

Co je Theano?

Theano lze definovat jako knihovnu pro Vědecké výpočty . Byl vyvinut Université de Montréal a je k dispozici od roku 2007.





theano-logo

Umožňuje vám efektivně definovat, optimalizovat a hodnotit matematické výrazy zahrnující vícerozměrná pole. Může běžet na CPU i GPU.



Co je TensorFlow?

TensorFlow je open-source softwarová knihovna od Google Brain pro programování toku dat napříč řadou úkolů.

nainstalovat php na Windows 7

Jedná se o symbolickou matematickou knihovnu, která se používá pro aplikace strojového učení, jako je .



Theano vs TensorFlow

Porovnáme Theano vs TensorFlow na základě následujících metrik:

Popularita:

Theano TensorFlow
Theano být starý rámec je ne tak populární mezi , Výzkumní pracovníci. Bylo to jednouTensorFlow dává ruce dolů Nejslavnější Deep Learning Framework a používá se v mnoha výzkumech.

Rychlost provedení:

Theano TensorFlow
Provádí úkoly rychleji než TensorFlow. Zejména jednotlivé úkoly GPU běží v Theano velmi rychle.Rychlost spouštění TensorFlow je ve srovnání s Theano pomalejší, ale v úlohách s více GPU je v čele.

Výhody technologie:

Theano TensorFlow
Podporuje širokou škálu operací.

Theano při určování chyba.

Optimalizátory máte plnou kontrolu, protože je musíte pevně kódovat.

TensorFlow stále musí být na stejné úrovni jako Theano.

To není případ TensorFlow

Poskytuje přístup k mnoha dobrým optimalizátorům ihned po vybalení z krabice. Coding Easier

Kompatibilita:

Theano TensorFlow
Keras úžasná knihovna Deep Learning je kompatibilní s Theano. Dobře se integruje.

Má nativní podporu Windows.

Podporuje také obaly na vysoké úrovni, jako je Lasagne.

Ale v případě TensorFlow to ještě není úplně ono. Ve verzi 2.0 to však tak nebude.

V současné době TensorFlow tuto podporu postrádá.

Žádná podpora pro Lasagne.

Podpora komunity:

Theano TensorFlow
Theano má větší podporu komunity, jak to přišlo před TensorFlow.

Má více dokumentace než TensorFlow

Online komunitní podpora TensorFlow se s popularitou rychle zvyšuje.

rozdíl mezi nástavci a nářadím

Dokumentace je poměrně menší.

Čitelnost kódu:

Pojďme porovnat Theano vs TensorFlow na základě jejich kódu. Zde používám základní příkladový skript, kde vezmeme některá falešná data a inicializujeme nejvhodnější data, aby mohla předpovídat budoucí datové body.

Theano kód:

pomocí třídy skeneru v Javě
import theano import theano.tensor jako T import numpy # Opět udělejte 100 bodů v numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0,100, 0,200], x_data) + 0.3 # Představte model 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 # Vypočítat přechody WRT střední kvadratická chyba pro každý parametr cena = T.mean (T.sqr (y - Y)) gradientW = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) updates = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] vlak = theano.function (vstupy = [X, Y], výstupy = náklady, aktualizace = aktualizace, allow_input_downcast = True) pro i v xrange (0, 201): vlak (x_data, y_data) tisk W.get_value (), b.get_value ()

Ekvivalentní kód TensorFlow:

import tensorflow as tf import numpy as np # Vytvořte 100 falešných datových bodů v NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Náhodný vstup y_data = np.dot ([0,100, 0,200], x_data) + 0,300 # Sestavte lineární model. 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 # Minimalizujte čtvercové chyby. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Pro inicializaci proměnných. init = tf.initialize_all_variables () # Spusťte graf sess = tf.Session () sess.run (init) # Přizpůsobit rovinu. pro krok v rozsahu x (0, 201): sess.run (vlak), pokud krok% 20 == 0: tisknout krok, sess.run (W), sess.run (b) # Nejlepší způsob učení je W: [[0,100 0,200]], b: [0,300]

Délka moudrý Oba Kodex jsou téměř Podobný není velký rozdíl. Dva identicky generované pole popisující vstup a cílový výstup. Pokud se ale podíváme na Inicializaci modelu.

Inicializace modelu:

# 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

Jak zde vidíte, TensorFlow nevyžaduje žádné speciální zacházení s proměnnými X a Y. Na druhou stranu, Theano vyžaduje zvláštní úsilí, aby se ujistil, že proměnné jsou Symbolické vstupy do funkce. Definice b a W jsou vysvětlující a také hezčí.

Učení: Optimalizace

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0,5) # (2) vlak = optimizer.minimize (ztráta) # (3) # Theano náklady = T.mean (T.sqr (y - Y)) # (1) gradient W = T.grad (cost = cost, wrt = W) # (2) gradientB = T.grad (cost = cost, wrt = b) # (2) updates = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) vlak = theano.function (vstupy = [X, Y], výstupy = náklady, aktualizace = aktualizace, allow_input_downcast = True) # (3)

Pro (1) MSE je téměř stejný pro Theano vs TensorFlow.

Pro (2) Definování Optimalizátor je snadné a jednoduché, jak se to stane v případě TensorFlow, ale Theanno vám poskytuje velkou kontrolu nad optimalizátory, i když je to docela zdlouhavé a zvyšuje úsilí o ověření.

Pro (3) Tréninková funkce Kodex je téměř podobný

Tréninkové tělo:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) pro krok v xrange (0, 201): sess.run (vlak) # Theano pro i v xrange (0, 201): vlak (x_data, y_data) tisk W.get_value (), b.get_value ()

Kód pro školení je téměř identický, ale zapouzdření spuštění grafu v objektu relace ano Koncepčně čistší než Theano.

Konečný verdikt: Theano vs TensorFlow

Na závěr lze říci, že obě API mají podobné rozhraní . Ale TensorFlow je poměrně jednodušší yo použití, protože poskytuje mnoho nástrojů pro monitorování a ladění. Theano se ujímá vedení Použitelnost a rychlost , ale TensorFlow je pro nasazení vhodnější. Papírování nebo Dokumentace protože Theano je více než TensorFlow a TensorFlow jako nový jazyk, lidé nemají na začátek mnoho zdrojů. Open-source hluboké knihovny jako Keras, Lasagne a Blocks byly postaveno na Theano.

Doufám, že toto srovnání stačilo na to, abyste se rozhodli, pro jaký rámec se rozhodnout, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Toto certifikační školení je sestaveno odborníky v oboru podle požadavků a požadavků odvětví. Osvojíte si pojmy jako funkce SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) a pracujete s knihovnami jako Keras & TFLearn.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů „Theano vs TensorFlow“ a my se vám ozveme.