Theano vs TensorFlow: ātrs ietvaru salīdzinājums



Šis raksts par Theano vs TensorFlow sniegs īsu un precīzu abu ietvaru salīdzinājumu un palīdzēs izvēlēties sev piemērotu.

Laikmets Dziļa mācīšanās un ir visaugstākajā līmenī. Tas radīs 2,3 miljoni Darbavietas līdz 2020. gadam. Ar katru mēnesi parādoties jauniem ietvariem, TensorFlow un Theano ir bijuši tur kādu laiku un ieguvuši arī lielu popularitāti. Tāpēc šajā Theano vs TensorFlow rakstā es apspriedīšu šādas tēmas:

Kas ir Theano?

Theano var definēt kā Zinātniskā skaitļošana . To izstrādāja Universitātes Monreāls un tas ir pieejams kopš 2007. gada.





theano-logo

Tas ļauj efektīvi definēt, optimizēt un novērtēt matemātiskās izteiksmes, kas saistītas ar daudzdimensiju masīviem. Tas var darboties gan ar CPU, gan GPU.



Kas ir TensorFlow?

TensorFlow ir Google Brain atvērtā koda programmatūras bibliotēka datu plūsmas programmēšanai dažādiem uzdevumiem.

Tā ir simboliska matemātikas bibliotēka, kas tiek izmantota mašīnmācīšanās lietojumprogrammām, piemēram, .



Theano vs TensorFlow

Mēs salīdzināsim Theano un TensorFlow, pamatojoties uz šādiem rādītājiem:

Popularitāte:

kaudze un kaudze java

Theano TensorFlow
Theano kā vecs ietvars ir nav tik populārs starp , Pētnieki. Tas bija kādreizTensorFlow ir nolaižams Slavenākais Deep Learning Framework un tiek izmantots daudzos pētījumos.

Izpildes ātrums:

Theano TensorFlow
Uzdevumus veic ātrāk nekā TensorFlow. Īpaši vienīgie GPU uzdevumi darbojas ātri un ātri Theano.TensorFlow izpildes ātrums ir lēnāks, salīdzinot ar Theano, taču Multi-GPU uzdevumos tas ir vadošais.

Tehnoloģiju priekšrocības:

Theano TensorFlow
Tas atbalsta plašu darbību klāstu.

Theano aprēķina gradientu, nosakot kļūda.

Jums ir pilnīga kontrole pār optimizētājiem, jo ​​jums tas ir grūti jākodē.

TensorFlow joprojām ir jābūt līdzvērtīgam ar Theano.

TensorFlow tas tā nav

Tas nodrošina piekļuvi daudziem labiem optimizētājiem ārpus kastes. Kas atvieglo kodēšanu

Saderība:

Theano TensorFlow
Keras ir pārsteidzoša dziļu mācību bibliotēka, kas ir saderīga ar Theano. Tas labi integrējas.

Tam ir vietējais Windows atbalsts.

Tas atbalsta arī augsta līmeņa iesaiņotājus, piemēram, Lasagne.

Bet TensorFlow gadījumā tas vēl nav pilnīgi pieejams. Tomēr v2.0 versijā tas tā nebūs.

Pašlaik TensorFlow trūkst šī atbalsta.

Nav atbalsta Lasagne.

Kopienas atbalsts:

Theano TensorFlow
Theano ir lielāks kopienas atbalsts, kāds tas bija pirms TensorFlow.

Tam ir vairāk dokumentācijas nekā TensorFlow

TensorFlow tiešsaistes kopienas atbalsts ar tā popularitāti strauji pieaug.

Dokumentācija ir salīdzinoši mazāka.

Koda lasāmība:

Salīdzināsim Theano un TensorFlow, pamatojoties uz viņu kodu. Šeit es ņemu pamata skripta piemēru, kurā mēs ņemsim dažus nepatiesus datus un inicializēsim vispiemērotāko šiem datiem, lai tas varētu paredzēt nākotnes datu punktus.

Theano kods:

importēt theano importēt theano.tensor kā T importēt numpy # Atkal izveidojiet 100 punktus numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intializēt Theano modeli X = T.matrica () Y = T.vektors () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1,0, 1,0, (1, 2)), nosaukums = 'W' y = W.dot (X) + b # Aprēķiniet gradientus WRT par kļūdu vidējā kvadrātā katram parametram = T.mean (T.sqr (y - Y)) gradientsW = T.grad (izmaksas = izmaksas, wrt = W) gradientsB = T.grad (izmaksas = izmaksas, wrt = b) atjauninājumi = [[W, W - gradientsW * 0.5], [b, b - gradientsB * 0.5]] vilciens = teano.funkcija (ieejas = [X, Y], izejas = izmaksas, atjauninājumi = atjauninājumi, allow_input_downcast = True) i i xrange (0, 201): vilciens (x_data, y_data) drukāt W.get_value (), b.get_value ()

Ekvivalents TensorFlow kods:

importēt tensorflow kā tf importēt numpy kā np # NumPy izveidojiet 100 viltus datu punktus. x_data = np.float32 (np.random.rand (2, 100)) # Nejauša ievade y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Konstruējiet lineāru modeli. b = tf. Mainīgais (tf.zeros ([1])) W = tf. Mainīgais (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Samaziniet kļūdas kvadrātā. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Mainīgo inicializēšanai. init = tf.initialize_all_variables () # Palaidiet diagrammu sess = tf.Session () sess.run (init) # Pielāgojiet plakni. pakāpienam xrange (0, 201): sess.run (vilciens), ja solis% 20 == 0: drukas solis, sess.run (W), sess.run (b) # Uzzina, ka piemērotākais ir W: [[0.100 0.200]], b: [0,300]

Garums gudrs Gan Kodekss ir gandrīz Līdzīgi nav lielas atšķirības. Divi identiski ģenerēti masīvi, kas apraksta ievadi un mērķa izvadi. Bet, ja mēs ieskatāmies modeļa inicializācijā.

Modeļa inicializēšana:

marionete vs šefpavārs vs ansible
# TensorFlow b = tf. Mainīgais (tf.zeros ([1])) W = tf. Mainīgais (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T. matrica () Y = T. vektors () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .vienveidīgs (-1,0, 1,0, (1, 2)), nosaukums = 'W' y = W.dot (X) + b

Kā redzat šeit, TensorFlow nav nepieciešama īpaša X un Y mainīgo apstrāde. No otras puses, Theano prasa papildu pūles, lai pārliecinātos, ka mainīgie ir Simboliskas ieejas uz funkciju. B un W definīcija ir skaidrojoša un arī jaukāka.

Mācīšanās: optimizācija

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano izmaksas = T.mean (T.sqr (y - Y)) # (1) gradientsW = T.grad (izmaksas = izmaksas, wrt = W) # (2) gradients B = T.grad (izmaksas = izmaksas, wrt = b) # (2) atjauninājumi = [[W, W - gradientsW * 0.5], [b, b - gradientsB * 0.5]] # (2) vilciens = teano.funkcija (ieejas = [X, Y], izejas = izmaksas, atjauninājumi = atjauninājumi, allow_input_downcast = True) # (3)

Par (1) MSE ir gandrīz vienāds Theano vs TensorFlow.

Par (2) definējot Optimizētājs ir viegli un vienkārši, kā tas notiek TensorFlow gadījumā, taču Theanno sniedz jums daudz kontroles, lai gan optimizētāji ir atklāti, lai gan tā ir diezgan ilga un palielina verifikācijas piepūli.

Par (3) Apmācības funkcija kodekss ir gandrīz līdzīgs

Apmācības iestāde:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) solim xrange (0, 201): sess.run (vilciens) # Theano i i xrange (0, 201): vilciens (x_data, y_data) drukāt W.get_value (), b.get_value ()

Apmācības kods ir gandrīz identisks, bet grafika izpildes iekapsulēšana sesijas objektā ir Konceptuāli tīrāks nekā Teano.

Galīgais spriedums: Theano vs TensorFlow

Noslēguma piezīmē var teikt, ka abām API ir līdzīga saskarne . Bet TensorFlow ir salīdzinoši vieglāk yo izmantot, jo tas nodrošina daudz uzraudzības un atkļūdošanas rīku. Teano ieņem vadošo lomu Lietojamība un ātrums , bet TensorFlow ir labāk piemērots izvietošanai. Dokumentu noformēšana vai Dokumentācija jo Theano ir vairāk nekā TensorFlow un TensorFlow ir jauna valoda, lai sāktu, cilvēkiem nav daudz resursu. Ir bijušas atvērtā koda dziļas bibliotēkas, piemēram, Keras, Lasagne un Blocks uzcelta virsū Theano.

Es ceru, ka šis salīdzinājums bija pietiekams, lai jūs varētu izlemt, kuru sistēmu izvēlēties, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Šīs sertifikācijas apmācības kuratori ir nozares profesionāļi atbilstoši nozares prasībām un prasībām. Jūs apgūsiet tādus jēdzienus kā SoftMax funkcija, Autoencoder neironu tīkli, Restricted Boltzmann Machine (RBM) un strādāsiet ar tādām bibliotēkām kā Keras & TFLearn.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā “Theano vs TensorFlow”, un mēs ar jums sazināsimies.