Theano vs TensorFlow: Kehysten nopea vertailu



Tämä Theano vs TensorFlow -artikkeli tarjoaa sinulle lyhyen ja tarkan vertailun näiden kahden kehyksen välillä ja auttaa sinua valitsemaan sinulle sopivan.

Aikakausi Syvä oppiminen ja on huipussaan. Se tulee luomaan 2,3 miljoonaa Työpaikat vuoteen 2020 mennessä. Uusien kehysten tullessa kuukausittain TensorFlow ja Theano ovat olleet siellä jonkin aikaa ja saaneet myös suuren määrän suosiota. Joten tässä Theano vs TensorFlow -artikkelissa keskustelen seuraavista aiheista:

Mikä on Theano?

Theano voidaan määritellä kirjastoksi Tieteellinen laskenta . Sen on kehittänyt Université de Montréal ja se on ollut saatavana vuodesta 2007.





theano-logo

Sen avulla voit määritellä, optimoida ja arvioida matemaattisia lausekkeita, joihin sisältyy moniulotteisia taulukoita. Se voi toimia sekä CPU: lla että GPU: lla.



Mikä on TensorFlow?

TensorFlow on Google Brainin avoimen lähdekoodin ohjelmistokirjasto datavirran ohjelmointiin useisiin tehtäviin.

Se on symbolinen matematiikkakirjasto, jota käytetään koneoppimissovelluksissa, kuten .



Theano vs TensorFlow

Vertaamme Theano vs TensorFlow seuraavien mittareiden perusteella:

Suosio:

Theano TensorFlow
Theano on vanha kehys ei niin suosittu joukossa Tutkijat. Se oli kerranTensorFlow on kädet alaspäin kuuluisin Deep Learning Framework ja sitä käytetään monissa tutkimuksissa.

Suoritusnopeus:

Theano TensorFlow
Suorittaa tehtävät nopeammin kuin TensorFlow. Varsinkin yksittäiset GPU-tehtävät suoritetaan, nopeasti Theanossa.TensorFlow'n suoritusnopeus on hitaampi kuin Theano, mutta Multi-GPU -tehtävissä se johtaa.

Teknologian edut:

Theano TensorFlow
Se tukee monenlaisia ​​toimintoja.

db-selain sqlite-opetusohjelmalle

Theano laskee gradientin määritettäessä virhe.

Sinulla on täysi hallinta optimoijien suhteen, koska sinun on pakko koodata se.

TensorFlow'n on silti oltava tasa-arvoinen Theanon kanssa.

Näin ei ole TensorFlow'n tapauksessa

Se antaa pääsyn moniin hyviin optimoijiin heti. Mikä tekee koodaamisesta helpompaa

Yhteensopivuus:

Theano TensorFlow
Keras on uskomaton syvällisen oppimisen kirjasto, joka on yhteensopiva Theanon kanssa. Se integroituu hyvin.

Siinä on Native Windows -tuki.

Se tukee myös korkean tason kääreitä, kuten Lasagne.

Mutta TensorFlow'n tapauksessa se ei ole vielä olemassa. V2.0: ssa näin ei kuitenkaan ole.

Tällä hetkellä TensorFlow'lta puuttuu tämä tuki.

Ei tukea Lasagnelle.

Yhteisön tuki:

muuntaa kaksinkertainen kokonaisluvuksi Java

Theano TensorFlow
Theanolla on suurempi yhteisön tuki kuin ennen TensorFlowia.

Siinä on enemmän dokumentaatiota kuin TensorFlow

TensorFlow'n verkkoyhteisötuki kasvaa nopeasti sen suosion myötä.

Dokumentaatio on verrattain vähäisempää.

Koodin luettavuus:

Vertaillaan Theanoa vs TensorFlow koodin perusteella. Tässä otan perustavanomaisen komentosarjan, jossa otamme joitain Phony-tietoja ja alustamme kyseisten tietojen parhaan sovituksen, jotta se voi ennustaa tulevat datapisteet.

Theano-koodi:

tuo theano tuo theano.tensor nimellä T tuonti numpy # Tee jälleen 100 pistettä numerossa x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intialise Theano-malli X = T.matriisi () Y = T.vektori () b = theano.shared (numpy.andom.yhtenäinen (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1,0, 1,0, (1, 2)), nimi = 'W' y = W.dot (X) + b # Laske gradientit WRT kunkin parametrin kustannusten keskimääräinen neliövirhe = T. Keskimääräinen (T.sqr (y - Y)) kaltevuus W = T.grad (hinta = kustannus, wrt = W) kaltevuus B = T.grad (kustannus = kustannus, wrt = b) päivitykset = [[W, W - kaltevuusW * 0,5], [b, b - kaltevuusB * 0,5]] juna = theano.funktio (tulot = [X, Y], lähdöt = kustannukset, päivitykset = päivitykset, allow_input_downcast = True) i: lle x-alueella (0, 201): juna (x_data, y_data) tulosta W.get_value (), b.get_value ()

Vastaava TensorFlow-koodi:

tuo tensorflow nimellä tf tuoda numpy nimellä np # Tee 100 väärennettyä datapistettä NumPy-palvelussa. x_data = np.float32 (np.random.rand (2, 100)) # Satunnainen syöttö y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Rakenna lineaarinen malli. b = tf Muuttuja (tf.zeros ([1])) W = tf Muuttuja (tf.satunnainen_yhtenäinen ([1, 2], -1,0, 1,0)) y = tf.matmul (W, x_data) + b # Pienennä neliövirheet. loss = tf.reduce_mean (tf.square (y - y_data)) optimoija = tf.train.GradientDescentOptimizer (0.5) juna = optimizer.minimize (loss) # Muuttujien alustamiseen. init = tf.initialize_all_variables () # Käynnistä kaavio sess = tf.Session () sess.run (init) # Sovita taso. xrange-asteikolle (0, 201): sess.run (juna), jos vaihe% 20 == 0: print step, sess.run (W), sess.run (b) # Opi parhaiten sopivaksi W: [[0.100 0.200]], b: [0,300]

Pituus viisas Molemmat ohjeet ovat melkein Samankaltainen ei ole paljon eroa. Kaksi identtisesti luotua taulukot, jotka kuvaavat tuloa ja kohdelähtöä. Mutta jos katsomme mallin alustamista.

Mallin alustus:

# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.satunnainen_yhtenäinen ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.matriisi () Y = T.vektori () b = theano.shared (numpy.andom.yhtenäinen (-1, 1), name = 'b') W = theano.shared (numpy.random) .yhtenäinen (-1,0, 1,0, (1, 2)), nimi = 'W' y = W.dot (X) + b

Kuten voit nähdä täältä, TensorFlow ei vaadi erityistä X- ja Y-muuttujien käsittelyä. Toisaalta Theano vaatii ylimääräistä vaivaa varmistaakseen, että muuttujat ovat Symboliset tulot toimintoon. B: n ja W: n määritelmät ovat selittäviä ja myös mukavampia.

Oppiminen: optimointi

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theanokustannukset = T. Keskiarvo (T.sqr (y - Y)) # (1) kaltevuus W = T.grad (kustannus = kustannus, wrt = W) # (2) kaltevuus B = T.grad (hinta = kustannus, wrt = b) # (2) päivitystä = [[W, W - kaltevuusW * 0.5], [b, b - kaltevuusB * 0.5]] # (2) juna = toiminto (tulot = [X, Y], lähdöt = kustannukset, päivitykset = päivitykset, allow_input_downcast = True) # (3)

Sillä (1) MSE on melkein sama Theano vs TensorFlow.

Sillä (2) Optimoija on helppoa ja yksinkertaista TensorFlow-sovelluksen tapaan, mutta Theanno antaa sinulle paljon hallintaa selkeästi optimoijista, vaikka se onkin melko pitkä ja lisää vahvistusvoimaa.

(3) Harjoitustoiminto Koodi on melkein samanlainen

Harjoitteluosa:

java julistaa joukko esineitä
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) xrange-arvon (0, 201) vaiheelle: sess.run (train) # Theano i: lle x-alueella (0, 201): juna (x_data, y_data) tulosta W.get_value (), b.get_value ()

Harjoittelun koodi on melkein identtinen, mutta kaavion suorituksen kapselointi istuntoobjektissa on Käsitteellisesti puhtaampi kuin Theano.

Lopullinen tuomio: Theano vs TensorFlow

Päätelmässä voidaan sanoa, että molemmilla sovellusliittymillä on samanlainen käyttöliittymä . Mutta TensorFlow on verrattain helpompaa yo käyttää, koska se tarjoaa paljon seuranta ja virheenkorjaus työkaluja. Theano ottaa johtoaseman Käytettävyys ja nopeus , mutta TensorFlow soveltuu paremmin käyttöönottoon. Paperityöt tai Dokumentointi sillä Theano on enemmän kuin TensorFlow ja TensorFlow ovat uusi kieli, ihmisillä ei ole aluksi paljon resursseja. Avoimen lähdekoodin syvät kirjastot, kuten Keras, Lasagne ja Blocks, ovat olleet rakennettu päälle Theano.

Toivon, että tämä vertailu riitti, jotta voit päättää, mitkä puitteet valitset, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Tämän sertifiointikoulutuksen ovat kuratoineet alan ammattilaiset alan vaatimusten ja vaatimusten mukaisesti. Opit käsitteet, kuten SoftMax-toiminto, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) ja työskentelet kirjastojen, kuten Keras & TFLearn, kanssa.

Onko sinulla kysymys meille? Mainitse se ”Theano vs TensorFlow” -kommenttiosassa, ja palaamme sinuun.