Theano vs TensorFlow: brza usporedba okvira

Ovaj članak o Theano vs TensorFlow pružit će vam kratku i jasnu usporedbu između dva okvira i pomoći će vam odabrati onaj koji vam odgovara.

Doba Duboko učenje i je na vrhuncu. To će stvoriti 2,3 milijuna Poslovi do 2020. S novim okvirima koji se pojavljuju svakog mjeseca, TensorFlow i Theano su tamo već neko vrijeme i stekli su također dobru popularnost. Dakle, u ovom članku Theano vs TensorFlow, raspravljat ću o sljedećim temama:



Što je Theano?

Theano se može definirati kao knjižnica za Znanstveno računarstvo . Razvio ga je Université de Montréal, a dostupan je od 2007. godine.



theano-logo

Omogućuje vam učinkovito definiranje, optimizaciju i procjenu matematičkih izraza koji uključuju višedimenzionalne nizove. Može raditi na CPU-u i GPU-u.



Što je TensorFlow?

TensorFlow je softverska biblioteka otvorenog koda tvrtke Google Brain za programiranje protoka podataka za niz zadataka.

To je simbolična matematička biblioteka koja se koristi za aplikacije strojnog učenja poput .



Theano vs TensorFlow

Usporedit ćemo Theano i TensorFlow na temelju sljedećih mjernih podataka:

Popularnost:

Theano TensorFlow
Theano je stari okvir nije toliko popularan među , Istraživači. Bilo je to jednom davnoTensorFlow je rukama dolje Najpoznatiji Okvir dubokog učenja i koristi se u mnogim istraživanjima.

Brzina izvršenja:

Theano TensorFlow
Izvršava zadatke brže od TensorFlowa. Pogotovo pojedinačni GPU zadaci rade se vrlo brzo u Theanu.Brzina izvršenja TensorFlow-a je sporija u usporedbi s Theanom, ali u Multi-GPU zadacima preuzima vodeću ulogu.

Prednosti tehnologije:

Theano TensorFlow
Podržava širok spektar operacija.

Theano izračunava gradijent pri određivanju pogreška.

Imate potpunu kontrolu nad optimizatorima jer ga morate tvrdo kodirati.

TensorFlow još uvijek mora biti ravan Theanu.

To nije slučaj za TensorFlow

Omogućuje pristup mnogim dobrim optimizatorima. Što olakšava kodiranje

Kompatibilnost:

Theano TensorFlow
Keras, nevjerojatna biblioteka za duboko učenje kompatibilna je s Theanom. Dobro se integrira.

Ima matičnu podršku za Windows.

Također podržava omote visoke razine poput lazanja.

Ali u slučaju TensorFlow-a, to još nije sasvim tamo. Međutim, u verziji 2.0 to neće biti slučaj.

Trenutno TensorFlowu nedostaje ova podrška.

Nema podrške za lazanje.

Podrška zajednice:

Theano TensorFlow
Theano ima veću podršku zajednice jer je nastao prije TensorFlowa.

Ima više dokumentacije nego TensorFlow

Podrška zajednice TensorFlow na mreži brzo se povećava svojom popularnošću.

spajanje sortirati u c ++

Dokumentacija je razmjerno manja.

Čitljivost koda:

Usporedimo Theano i TensorFlow na temelju njihovog koda. Ovdje uzimam osnovni primjer skripte gdje ćemo uzeti neke Phony podatke i inicijalizirati najbolje prikladne za te podatke kako bi mogao predvidjeti buduće podatkovne točke.

Theano kod:

import theano import theano.tensor kao T import numpy # Ponovo napravite 100 bodova u numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Incijalizirajte 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 # Izračunajte gradijente WRT srednje-kvadratne pogreške za svaki parametar cost = T.mean (T.sqr (y - Y)) gradijentW = T.grad (trošak = trošak, wrt = W) gradijentB = T.grad (trošak = trošak, wrt = b) ažuriranja = [[W, W - gradijentW * 0,5], [b, b - gradijentB * 0,5]] vlak = theano.funkcija (ulazi = [X, Y], izlazi = trošak, ažuriranja = ažuriranja, allow_input_downcast = True) za i u xrange (0, 201): vlak (x_data, y_data) ispis W.get_value (), b.get_value ()

Ekvivalentni kôd tenzorskog protoka:

import tensorflow as tf import numpy as np # Napravite 100 lažnih podatkovnih točaka u NumPyu. x_data = np.float32 (np.random.rand (2, 100)) # Slučajni unos y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Konstruirajte linearni 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 # Smanjite kvadratne pogreške. gubitak = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0,5) train = optimizer.minimize (gubitak) # Za inicijalizaciju varijabli. init = tf.initialize_all_variables () # Pokrenite graf sess = tf.Session () sess.run (init) # Uklopite ravninu. za korak u xrange (0, 201): sess.run (vlak) ako je korak% 20 == 0: korak ispisa, sess.run (W), sess.run (b) # Saznaje da najbolje odgovara W: [[0,100 0.200]], b: [0.300]

Duljina Mudra Oba su Kodeksa gotovo Sličan nema puno razlike. Dvije identično generirane nizovi koji opisuju ulaz i ciljni izlaz. Ali ako pogledamo inicijalizaciju modela.

Inicijalizacija modela:

# 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.točka (X) + b

Kao što ovdje možete vidjeti da TensorFlow ne zahtijeva nikakav poseban tretman X i Y varijabli. S druge strane, Theano zahtijeva dodatni napor kako bi se osiguralo jesu li varijable Simbolički ulazi na Funkciju. Definicije b i W su objašnjene i ujedno ljepše.

Učenje: optimizacija

# Tensorflow gubitak = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (gubitak) # (3) # Theano trošak = T.mean (T.sqr (y - Y)) # (1) gradijentW = T.grad (trošak = trošak, wrt = W) # (2) gradijentB = T.grad (trošak = trošak, wrt = b) # (2) ažuriranja = [[W, W - gradijentW * 0,5], [b, b - gradijentB * 0,5]] # (2) vlak = theano.funkcija (ulazi = [X, Y], izlazi = trošak, ažuriranja = ažuriranja, allow_input_downcast = True) # (3)

Za (1) MSE je gotovo isto za Theano vs TensorFlow.

Za (2) Definiranje Optimizator je jednostavan i jednostavan kao što je to slučaj u slučaju TensorFlowa, ali Theanno vam pruža veliku kontrolu nad očima optimizatora, iako je prilično dugačak i povećava napor na provjeri.

Za (3) Funkcija treninga zakonik je gotovo sličan

Tijelo za trening:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) za korak u xrange (0, 201): sess.run (vlak) # Theano za i u xrange (0, 201): vlak (x_data, y_data) ispis W.get_value (), b.get_value ()

Kôd za trening je gotovo identičan, ali Inkapsulacija izvršenja grafa u objektu sesije jest Konceptualno čistiji nego Theano.

Konačna presuda: Theano vs TensorFlow

U završnoj napomeni, može se reći da oba API-ja imaju slično sučelje . Ali TensorFlow je usporedno lakše yo koristite jer pruža puno alata za praćenje i uklanjanje pogrešaka. Theano preuzima vodstvo Korisnost i brzina , ali TensorFlow je prikladniji za implementaciju. Papirologija ili Dokumentacija jer Theano je više od TensorFlowa, a TensorFlow je novi jezik, ljudi za početak nemaju puno resursa. Bili su otvorene biblioteke dubokog raspona poput Keras, Lasagne i Blocks izgrađena na vrhu Theano.

Nadam se da vam je ova usporedba bila dovoljna da odlučite za koji se okvir odlučiti, pogledajte Edureka, pouzdana tvrtka za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Ovaj certifikacijski trening pripremaju profesionalci u industriji prema industrijskim zahtjevima i zahtjevima. Svladati ćete koncepte kao što su SoftMax funkcija, Neuronske mreže automatskog kodiranja, Ograničeni Boltzmannov stroj (RBM) i raditi s bibliotekama poput Kerasa i TFLearna.

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare 'Theano vs TensorFlow', a mi ćemo vam se javiti.