Theano vs TensorFlow: raamistike kiire võrdlus



See artikkel Theano vs TensorFlow kohta annab teile lühikese ja täpse võrdluse kahe raamistiku vahel ning aitab teil valida endale sobiva.

Aasta ajastu Sügav õppimine ja on tipus. See hakkab looma 2,3 miljonit Töökohad aastaks 2020. Kuna iga kuu tulevad uued raamistikud, on TensorFlow ja Theano seal mõnda aega olnud ning on ka palju populaarsust kogunud. Nii et selles Theano vs TensorFlow artiklis käsitlen järgmisi teemasid:

Mis on Theano?

Theanot saab määratleda kui teeki Teaduslik arvutus . Selle töötas välja Montréali ülikool ja see on olnud saadaval alates 2007. aastast.





theano-logo

See võimaldab teil mitmemõõtmelisi massiive hõlmavaid matemaatilisi avaldisi tõhusalt määratleda, optimeerida ja hinnata. See võib töötada nii protsessoril kui ka GPU-l.



Mis on TensorFlow?

TensorFlow on Google Brain'i avatud lähtekoodiga tarkvarakogu, mis võimaldab mitmesuguste ülesannete jaoks andmevoo programmeerimist.

See on sümboolne matemaatikakogu, mida kasutatakse masinõpperakenduste jaoks .



andmestruktuurid ja algoritmid java õpetuses

Theano vs TensorFlow

Võrdleme Theano vs TensorFlow järgmiste mõõdikute põhjal:

Populaarsus:

Theano TensorFlow
Theano on vana raamistik mitte nii populaarne seas , Teadlased. See oli kunagi ammuTensorFlow on Kõige kuulsam Deep Learning Framework ja seda kasutatakse paljudes uuringutes.

Täitmise kiirus:

Theano TensorFlow
Teeb ülesandeid kiiremini kui TensorFlow. Eriti üksikud GPU-ülesanded töötavad Theanos kiirelt.TensorFlow'i täitmise kiirus on võrreldes Theanoga aeglasem, kuid mitme GPU-ülesande puhul on see juhtpositsioonil.

Tehnoloogia eelised:

Theano TensorFlow
See toetab paljusid toiminguid.

Theano arvutab astme määramisel gradiendi viga.

Teil on optimeerijate üle täielik kontroll, kuna peate selle kodeerima.

TensorFlow peab ikkagi Theanoga võrdväärseks saama.

See ei kehti TensorFlow puhul

See annab kastist juurdepääsu paljudele headele optimeerijatele. Mis muudab kodeerimise lihtsamaks

Ühilduvus:

Theano TensorFlow
Kerase hämmastav sügava õppe raamatukogu ühildub Theanoga. See integreerub hästi.

Sellel on Windowsi native tugi.

Samuti toetab see kõrgetasemelisi ümbriseid nagu Lasagne.

Kuid TensorFlow'i puhul pole see veel päris olemas. V2.0 versioonis see siiski nii ei ole.

Praegu puudub TensorFlow'il see tugi.

Lasanjet ei toeta.

Kogukonna tugi:

Theano TensorFlow
Theanol on suurem kogukondlik tugi, nagu see sündis enne TensorFlow'i.

Sellel on rohkem dokumentatsiooni kui TensorFlow

TensorFlow'i veebikogukonna tugi suureneb oma populaarsusega kiiresti.

Dokumentatsiooni on suhteliselt vähem.

Koodi loetavus:

visk vs visked vs visatav jaavas

Võrdleme Theano vs TensorFlow nende koodi järgi. Siinkohal võtan põhinäite skripti, kus võtame mõned võltsitud andmed ja lähtestame nende andmete jaoks sobivaima, et see saaks tulevasi andmepunkte ennustada.

Theano kood:

impordi theano import theano.tensor nimega T impordi numpy # Tee jällegi 100 punkti numbris x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_andmed) + 0,3 # Intealiseeri Theano mudel X = T.maatriks () Y = T.vektor () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1,0, 1,0, (1, 2)), nimi = 'W') y = W.dot (X) + b # Arvutage gradiendid WRT iga ruudu keskmise ruudu viga = T. Keskmine (T.sqr (y - Y)) gradientW = T.grad (maksumus = maksumus, wrt = W) gradientB = T.grad (maksumus = maksumus, wrt = b) värskendused = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] rong = theano.funktsioon (sisendid = [X, Y], väljundid = maksumus, värskendused = värskendused, allow_input_downcast = True) i-le xrange (0, 201): rong (x_andmed, y_andmed) printige W.get_value (), b.get_value ()

Ekvivalentne TensorFlow kood:

impordi tensorflow tf-na impordi numpy kui np # Tee NumPy-s 100 võltsitud andmepunkti. x_andmed = np.float32 (np.random.rand (2, 100)) # Juhuslik sisend y_data = np.dot ([0.100, 0.200], x_andmed) + 0.300 # Konstrueerige lineaarne mudel. b = tf.Muutuv (tf.zeros ([1])) W = tf.Muutuv (tf.juhuslik_ühene ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_andmed) + b # Minimeerige ruuduvead. kaotus = tf.reduce_mean (tf.square (y - y_data)) optimeerija = tf.train.GradientDescentOptimizer (0.5) rong = optimizer.minimize (loss) # Muutujate lähtestamiseks. init = tf.initialize_all_variables () # Käivitage graafik sess = tf.Session () sess.run (init) # Paigaldage tasapind. xrange'i astmele (0, 201): sess.run (rong), kui samm% 20 == 0: printimissamm, sess.run (W), sess.run (b) # Õpib, et parim sobivus on W: [[0.100 0.200]], b: [0,300]

Pikkus tark Mõlemad koodeksid on peaaegu Sarnased pole suurt vahet. Kaks identselt genereeritud massiivid, mis kirjeldavad sisendit ja sihtväljundit. Aga kui vaatame mudeli initsialiseerimist.

Mudeli lähtestamine:

# TensorFlow b = tf.Muutuja (tf.zeros ([1])) W = tf.Muutuja (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.maatriks () Y = T.vektor () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random) .ühtlane (-1,0, 1,0, (1, 2)), nimi = 'W' y = W.dot (X) + b

Nagu näete siin, ei vaja TensorFlow X ja Y muutujate erikohtlemist. Teiselt poolt nõuab Theano täiendavaid jõupingutusi, et veenduda muutujate vastavuses Sümboolsed sisendid funktsioonile. B ja W määratlus on selgitav ja ka toredam.

Õppimine: optimeerimine

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimeerija = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (maksumus = kulu, wrt = W) # (2) gradientB = T.grad (maksumus = maksumus, wrt = b) # (2) värskendust = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) rong = teofunktsioon (sisendid = [X, Y], väljundid = maksumus, värskendused = värskendused, allow_input_downcast = True) # (3)

(1) jaoks MSE on Theano vs TensorFlow puhul peaaegu sama.

Jaoks (2) Optimeerija on lihtne ja lihtne, nagu TensorFlow puhul juhtub, kuid Theanno annab teile optimeerijate jaoks palju kontrolli, ehkki see on üsna pikk ja suurendab kontrollimise pingutust.

Poolt (3) Treeningfunktsioon koodeks on peaaegu sarnane

Treeningkeha:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) xrange'i (0, 201) sammu jaoks: sess.run (rong) # Theano i jaoks xrange'is (0, 201): rong (x_andmed, y_andmed) printige W.get_value (), b.get_value ()

Koolituse kood on peaaegu identne, kuid graafiku täitmise kapseldamine seansiobjektis on Kontseptuaalselt puhtam kui Theano.

Lõplik kohtuotsus: Theano vs TensorFlow

Kokkuvõtvas märkuses võib öelda, et mõlemal API-l on sarnane liides . Kuid TensorFlow on suhteliselt lihtsam yo kasutada, kuna see pakub palju jälgimise ja silumise tööriistu. Theano võtab juhtpositsiooni sisse Kasutatavus ja kiirus , kuid TensorFlow sobib paremini juurutamiseks. Paberimajandus või Dokumentatsioon sest Theano on midagi enamat kui TensorFlow ja TensorFlow, mis on uus keel, pole inimestel kõigepealt palju ressursse. Avatud lähtekoodiga süvaraamatukogud nagu Keras, Lasagne ja Blocks on olnud ehitatud peale Theano.

Loodan, et sellest võrdlusest piisas, et saaksite otsustada, millise raamistiku valida, vaadake autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Selle sertifitseerimiskoolituse on kureerinud valdkonna spetsialistid vastavalt tööstusharu nõuetele ja nõudmistele. Valdate selliseid mõisteid nagu funktsioon SoftMax, Autoencoderi närvivõrgud, piiratud Boltzmanni masin (RBM) ja töötate selliste raamatukogudega nagu Keras & TFLearn.

Kas teil on meile küsimus? Palun mainige seda jaotise „Theano vs TensorFlow” kommentaaride jaotises ja võtame teiega ühendust.