Éra Hlboké učenie a je na vrchole. Chystá sa to vytvoriť 2,3 milióna Pracovné miesta do roku 2020. Vďaka novým rámcom, ktoré prichádzajú každý mesiac, sú tu spoločnosti TensorFlow a Theano už nejaký čas a tiež si získali veľkú popularitu. V tomto článku o Theano vs TensorFlow sa teda budem venovať nasledujúcim témam:
Čo je Theano?
Theano možno definovať ako knižnicu pre Vedecké výpočty . Bola vyvinutá Université de Montréal a je k dispozícii od roku 2007.
Umožňuje vám efektívne definovať, optimalizovať a hodnotiť matematické výrazy zahŕňajúce viacrozmerné polia. Môže bežať na CPU aj GPU.
Čo je TensorFlow?
TensorFlow je knižnica softvéru typu open-source od spoločnosti Google Brain na programovanie toku údajov v celom rade úloh.
na čo sa používa bábka
Je to symbolická matematická knižnica, ktorá sa používa pre aplikácie strojového učenia ako .
Theano vs TensorFlow
Porovnáme Theano a TensorFlow na základe nasledujúcich metrík:
Popularita:
Theano | TensorFlow |
Theano byť starým rámcom je nie tak populárne medzi , Vedci. Bolo to kedysi | TensorFlow dáva ruky dole Najslávnejšie Deep Learning Framework a používa sa pri mnohých výskumoch. |
Rýchlosť vykonania:
Theano | TensorFlow |
Vykonáva úlohy rýchlejšie ako TensorFlow. Hlavne jednotlivé úlohy GPU bežia v Theano veľmi rýchlo. | Rýchlosť vykonávania TensorFlow je v porovnaní s Theano pomalšia, ale v úlohách s viacerými GPU je na čele. |
Výhody technológie:
Theano | TensorFlow |
Podporuje širokú škálu operácií. Theano počíta gradient pri určovaní chyba. Nad Optimalizátormi máte úplnú kontrolu, pretože ich musíte pevne kódovať. | TensorFlow musí byť stále na rovnakej úrovni ako Theano. To nie je prípad TensorFlow Poskytuje prístup k mnohým dobrým optimalizátorom už po vybalení z krabice. Vďaka čomu je kódovanie jednoduchšie |
Kompatibilita:
Theano | TensorFlow |
Keras úžasná knižnica Deep Learning je kompatibilná s Theano. Dobre sa integruje. Má natívnu podporu systému Windows. Podporuje tiež obaly na vysokej úrovni, ako je napríklad Lasagne. | Ale v prípade TensorFlow to ešte nie je ono. Vo verzii 2.0 to však nebude platiť. TensorFlow v súčasnosti túto podporu nemá. Žiadna podpora pre Lasagne. |
Podpora komunity:
Theano | TensorFlow |
Spoločnosť Theano má väčšiu podporu komunity, ktorá sa objavila pred TensorFlow. Má viac dokumentácie ako TensorFlow | Populárna online podpora komunity TensorFlow sa rýchlo zvyšuje.java zmena zdvojnásobiť na int Dokumentácia je porovnateľne menšia. |
Čitateľnosť kódu:
Porovnajme Theano vs TensorFlow na základe ich kódu. Tu uvádzam základný príklad skriptu, v ktorom vezmeme niektoré falošné údaje a inicializujeme najvhodnejšie pre tieto údaje, aby bolo možné predpovedať budúce dátové body.
Theano kód:
čo je scipy v pythone
import theano import theano.tensor ako T import numpy # Opäť urobte 100 bodov v numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0,100, 0,200], x_data) + 0.3 # Intializujte 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čítajte prechody WRT stredná-štvorcová chyba pre každý parameter 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, aktualizácie = aktualizácie, allow_input_downcast = True) pre i v rozsahu x (0, 201): vlak (x_data, y_data) tlačiť W.get_value (), b.get_value ()
Ekvivalentný kód TensorFlow:
import tensorflow as tf import numpy as np # Vytvorte 100 falošných dátových bodov 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 # Zostrojte lineárny 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 štvorcové chyby. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) vlak = optimizer.minimize (strata) # Na inicializáciu premenných. init = tf.initialize_all_variables () # Spustiť graf sess = tf.Session () sess.run (init) # Prispôsobiť rovinu. pre krok v rozsahu xrange (0, 201): sess.run (vlak), ak krok% 20 == 0: krok tlače, sess.run (W), sess.run (b) # Najlepšie vhodné pre učenie je W: [[0,100 0,200]], b: [0,300]
Dĺžka múdra Kódex je takmer Podobný nie je veľký rozdiel. Dve identicky generované polia popisujúce vstup a cieľový výstup. Ale ak sa pozrieme na Inicializáciu modelu.
Inicializácia 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
Ako tu vidíte, TensorFlow nevyžaduje žiadne špeciálne ošetrenie premenných X a Y. Na druhej strane vyžaduje Theano ďalšie úsilie, aby sa ubezpečil, že premenné sú Symbolické vstupy k funkcii. Definície b a W sú vysvetľujúce a tiež príjemnejšie.
Učenie: Optimalizácia
# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0,5) # (2) vlak = optimizer.minimize (strata) # (3) # Nízke 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, aktualizácie = aktualizácie, allow_input_downcast = True) # (3)
Pre (1) MSE je takmer rovnaký pre Theano vs TensorFlow.
Pre (2) Definovanie Optimalizátor je ľahké a jednoduché, ako to býva v prípade TensorFlow, ale Theanno vám poskytuje veľkú kontrolu nad optimalizátormi, aj keď je dosť zdĺhavá a zvyšuje úsilie o overenie.
Pre (3) Tréningová funkcia kódex je takmer podobný
Tréningový orgán:
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) pre krok v xrange (0, 201): sess.run (vlak) # Theano pre i v xrange (0, 201): vlak (x_data, y_data) tlačiť W.get_value (), b.get_value ()
Kód pre školenie je takmer identický, ale zapuzdrenie vykonania grafu v objekte relácie áno Koncepčne čistejšie ako Theano.
Konečný verdikt: Theano vs TensorFlow
Na záver sa dá povedať, že obe API majú podobné rozhranie . TensorFlow je však porovnateľný jednoduchšie yo použitie, pretože poskytuje veľa monitorovacích a ladiacich nástrojov. Theano sa ujíma vedenia Použiteľnosť a rýchlosť , ale TensorFlow je pre nasadenie vhodnejší. Papierovanie resp Dokumentácia pretože Theano je viac ako TensorFlow a TensorFlow ako nový jazyk, ľudia na úvod nemajú veľa zdrojov. Hlboké knižnice typu open-source, ako sú Keras, Lasagne a Blocks, boli postavené na Theano.
Dúfam, že toto porovnanie stačilo na to, aby ste sa rozhodli, pre ktorý rámec sa rozhodnete autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Toto certifikačné školenie je zostavené profesionálmi v odbore podľa priemyselných požiadaviek a požiadaviek. Osvojíte si pojmy ako funkcia SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) a prácu s knižnicami ako Keras & TFLearn.
Máte na nás otázku? Uveďte to prosím v sekcii komentárov „Theano vs TensorFlow“ a my sa vám ozveme.