Theano vs TensorFlow: Rýchle porovnanie rámcov



Tento článok o Theano vs TensorFlow vám poskytne krátke a ostré porovnanie medzi týmito dvoma rámcami a pomôže vám vybrať ten, ktorý vám vyhovuje.

É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.





theano-logo

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 kedysiTensorFlow 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.