Theano vs TensorFlow: hitra primerjava okvirov



Ta članek o Theano vs TensorFlow vam bo ponudil kratko in jasno primerjavo med dvema ogrodjema in vam pomagal izbrati tistega, ki vam ustreza.

Obdobje Globoko učenje in je na vrhuncu. Ustvarjalo bo 2,3 milijona Zaposlitve do leta 2020. Z novimi okviri, ki prihajajo vsak mesec, sta TensorFlow in Theano tam že nekaj časa in sta si tudi pridobila veliko priljubljenosti. V tem članku Theano vs TensorFlow bom razpravljal o naslednjih temah:

Kaj je Theano?

Theano lahko definiramo kot knjižnico za Znanstveno računalništvo . Razvil ga je Université de Montréal in je na voljo od leta 2007.





theano-logo

Omogoča vam učinkovito definiranje, optimizacijo in vrednotenje matematičnih izrazov, ki vključujejo večdimenzionalne nize. Lahko deluje na CPU in GPU.



Kaj je TensorFlow?

TensorFlow je odprtokodna knjižnica programske opreme podjetja Google Brain za programiranje pretoka podatkov za različne naloge.

nastavite eclipse za javo

To je simbolična matematična knjižnica, ki se uporablja za aplikacije strojnega učenja, kot je .



Theano proti TensorFlowu

Primerjali bomo Theano in TensorFlow na podlagi naslednjih meritev:

Priljubljenost:

Theano TensorFlow
Theano je stari okvir ni tako priljubljen med , Raziskovalci. Bilo je nekočTensorFlow je v rokah Najbolj znana Deep Learning Framework in se uporablja v številnih raziskavah.

Hitrost izvedbe:

Theano TensorFlow
Opravlja naloge hitreje kot TensorFlow. Še posebej posamezne naloge GPU delujejo zelo hitro v Theanu.Hitrost izvajanja TensorFlow-a je v primerjavi z Theano počasnejša, vendar pri nalogah z več grafičnimi procesorji vodi.

Tehnološke prednosti:

Theano TensorFlow
Podpira širok spekter operacij.

Theano izračuna gradient pri določanju napaka.

Imate popoln nadzor nad optimizatorji, saj ga morate trdo kodirati.

TensorFlow mora biti še vedno enak Theanu.

To ne velja za TensorFlow

Omogoča dostop do številnih dobrih optimizatorjev. Kar olajša kodiranje

Kompatibilnost:

Theano TensorFlow
Keras neverjetna knjižnica globokega učenja je združljiva z Theano. Dobro se integrira.

Ima podporo za izvorni sistem Windows.

Podpira tudi ovitke na visoki ravni, kot je lazanje.

Toda v primeru TensorFlow še ni povsem tam. Vendar v različici 2.0 to ne bo veljalo.

Trenutno TensorFlow nima te podpore.

Ni podpore za lazanje.

Podpora skupnosti:

zapre program iz jave
Theano TensorFlow
Theano ima večjo podporo skupnosti, kot se je pojavila že pred TensorFlowom.

Ima več dokumentacije kot TensorFlow

Podpora spletne skupnosti TensorFlow s svojo priljubljenostjo hitro narašča.

Dokumentacija je razmeroma manjša.

Koda berljivost:

Primerjajmo Theano in TensorFlow na podlagi njihove kode. Tu vzamem osnovni primer skripta, kjer bomo vzeli nekaj Phonijevih podatkov in inicializirali najbolj primerne podatke, da bo lahko napovedal prihodnje podatkovne točke.

Koda Theano:

import theano import theano.tensor kot T import numpy # Še enkrat naredite 100 točk v numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intalizirajte 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 prelive WRT povprečno kvadratno napako za vsak parameter stroškov = T.mean (T.sqr (y - Y)) gradientW = T.grad (stroški = stroški, wrt = W) gradientB = T.grad (stroški = stroški, wrt = b) posodobitve = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] vlak = theano.funkcija (vhodi = [X, Y], izhodi = stroški, posodobitve = posodobitve, allow_input_downcast = True) za i v xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Enakovredna koda TensorFlow:

import tensorflow as tf import numpy as np # V NumPy ustvari 100 lažnih podatkovnih točk. x_data = np.float32 (np.random.rand (2, 100)) # Naključni vhod y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Sestavite 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 # Zmanjšajte kvadratne napake. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Za inicializacijo spremenljivk. init = tf.initialize_all_variables () # Zaženite graf sess = tf.Session () sess.run (init) # Namestite ravnino. za korak v xrange (0, 201): sess.run (vlak), če je korak% 20 == 0: korak tiskanja, sess.run (W), sess.run (b) # Uči, da je najprimernejši W: [[0,100 0.200]], b: [0.300]

Dolžina modra Oba zakonika sta skoraj Podobno ni velike razlike. Dve enako ustvarjeni polja, ki opisujejo vhod in ciljni izhod. Če pa si ogledamo Inicializacijo modela.

Inicializacija 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. pika (X) + b

Kot lahko vidite tukaj, TensorFlow ne zahteva posebne obravnave spremenljivk X in Y. Po drugi strani pa Theano zahteva dodaten napor, da se prepriča, ali so spremenljivke Simbolični vhodi do funkcije. Opredelitev b in W sta pojasnjevalni in tudi lepši.

Učenje: optimizacija

# Tensorflow izguba = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (stroški = stroški, wrt = W) # (2) gradientB = T.grad (stroški = stroški, wrt = b) # (2) posodobitve = [[W, W - prelivW * 0,5], [b, b - prelivB * 0,5]] # (2) vlak = theano.function (vhodi = [X, Y], izhodi = stroški, posodobitve = posodobitve, allow_input_downcast = True) # (3)

Za (1) MSE je skoraj enako za Theano proti TensorFlowu.

Za (2) Določitev Optimizator je enostaven in preprost, kot je to mogoče v primeru TensorFlowa, toda Theanno vam ponuja veliko nadzora nad očitnimi optimizatorji, čeprav je precej dolgotrajen in poveča napor za preverjanje.

Za (3) Funkcija treninga zakonik je skoraj podoben

Telo za trening:

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

Koda za usposabljanje je skoraj enaka, toda Inkapsulacija izvajanja grafa v objektu seje je Konceptualno čistejši kot Theano.

Končna razsodba: Theano vs TensorFlow

V zaključni opombi lahko rečemo, da imata oba API-ja podoben vmesnik . Toda TensorFlow je primerjalno lažje jo uporabljate, saj ponuja veliko orodij za spremljanje in odpravljanje napak. Theano prevzame vodilno vlogo Uporabnost in hitrost , toda TensorFlow je bolj primeren za uvajanje. Papirologija oz Dokumentacija kajti Theano je več kot TensorFlow in TensorFlow je nov jezik, saj ljudje za začetek nimajo veliko virov. Odprtokodne globoke knjižnice, kot so Keras, Lasagne in Blocks, že obstajajo zgrajena na vrhu Theano.

Upam, da je bila ta primerjava dovolj, da ste se odločili, za kateri okvir se boste odločili, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Ta certifikacijski trening pripravijo strokovnjaki iz panoge v skladu z zahtevami in zahtevami panoge. Obvladali boste koncepte, kot so funkcija SoftMax, nevronske mreže samodejnega kodiranja, omejeni stroj Boltzmann (RBM) in delo s knjižnicami, kot sta Keras in TFLearn.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje v oddaji 'Theano vs TensorFlow' in mi se bomo oglasili.