Theano vs TensorFlow: En rask sammenligning av rammer



Denne artikkelen om Theano vs TensorFlow vil gi deg en kort og klar sammenligning mellom de to rammeverkene og hjelpe deg med å velge en som passer deg.

Eraen av Dyp læring og er på topp. Det kommer til å skape 2,3 millioner Jobber innen 2020. Med nye rammer som kommer opp hver måned, har TensorFlow og Theano vært der en stund og har også fått en god popularitet. Så i denne Theano vs TensorFlow-artikkelen vil jeg diskutere følgende emner:

Hva er Theano?

Theano kan defineres som et bibliotek for Vitenskapelig databehandling . Den ble utviklet av Université de Montréal og har vært tilgjengelig siden 2007.





theano-logo

Den lar deg definere, optimalisere og evaluere matematiske uttrykk som involverer flerdimensjonale matriser effektivt. Den kan kjøres på både CPU og GPU.



Hva er TensorFlow?

TensorFlow er et open source-programvarebibliotek av Google Brain for dataflytprogrammering på tvers av en rekke oppgaver.

Det er et symbolsk mattebibliotek som brukes til maskinlæringsapplikasjoner som .



Theano vs TensorFlow

Vi vil sammenligne Theano vs TensorFlow basert på følgende beregninger:

Popularitet:

Theano TensorFlow
Det å være et gammelt rammeverk er ikke så populært blant , Forskere. Det var en gangTensorFlow er hendene nede på mest berømte Deep Learning Framework og brukes i mye forskning.

Utførelseshastighet:

hva er semafor i java
Theano TensorFlow
Utfører oppgaver raskere enn TensorFlow. Spesielt de enkelte GPU-oppgavene kjører fort i Theano.TensorFlows kjøringshastighet er tregere sammenlignet med Theano, men i Multi-GPU-oppgaver tar den ledelsen.

Teknologiske fordeler:

Theano TensorFlow
Den støtter et bredt spekter av operasjoner.

Theano beregner gradienten når den bestemmer feil.

kartsiden bli med i bikuben

Du har full kontroll over Optimizers da du må hardkode det.

TensorFlow må fortsatt være på nivå med Theano.

Det er ikke tilfelle for TensorFlow

Det gir tilgang til mange gode Optimizers ut av esken. Noe som gjør koding enklere

Kompatibilitet:

Theano TensorFlow
Keras et fantastisk Deep Learning Library er kompatibelt med Theano. Det integrerer godt.

Den har Native Windows-støtte.

Den støtter også høynivåpakker som Lasagne.

Men i tilfelle TensorFlow er den ikke helt der ennå. I v2.0 vil dette imidlertid ikke være tilfelle.

For øyeblikket mangler TensorFlow denne støtten.

Ingen støtte for Lasagne.

Samfunnsstøtte:

Theano TensorFlow
Theano har Bigger Community Support som det kom før TensorFlow.

Den har mer dokumentasjon enn TensorFlow

TensorFlows Online Community Support øker raskt med populariteten.

Dokumentasjon er relativt mindre.

Kodelesbarhet:

La oss sammenligne Theano vs TensorFlow basert på deres kode. Her tar jeg et grunnleggende eksempel på skript der vi tar noen falske data og initialiserer den beste passformen for disse dataene, slik at de kan forutsi fremtidige datapunkter.

Theano-koden:

import theano import theano.tensor as T import numpy # Igjen, lag 100 poeng i numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intialiser Theano-modellen X = T.matrix () 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)), name = 'W') y = W.dot (X) + b # Beregn gradientene WRT gjennomsnittlig kvadrat-feil for hver parameterkostnad = T.mean (T.sqr (y - Y)) gradientW = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) updates = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] tog = theano.function (innganger = [X, Y], utganger = kostnad, oppdateringer = oppdateringer, allow_input_downcast = True) for i i xrange (0, 201): tog (x_data, y_data) skriv ut W.get_value (), b.get_value ()

Tilsvarende TensorFlow-kode:

importer tensorflow som tf import numpy som np # Lag 100 falske datapunkter i NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Tilfeldig inngang y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Konstruer en lineær modell. b = tf. variabel (tf. nuller ([1])) W = tf. variabel (tf. random_uniform ([1, 2], -1.0, 1.0)) y = tf. matmul (W, x_data) + b # Minimer de kvadratiske feilene. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # For initialisering av variablene. init = tf.initialize_all_variables () # Start grafen sess = tf.Session () sess.run (init) # Monter planet. for trinn i xrange (0, 201): sess.run (tog) hvis trinn% 20 == 0: print step, sess.run (W), sess.run (b) # Lær best passform er W: [[0.100 0.200]], b: [0.300]

Lengde klok Begge kodene er nesten Lignende det er ikke mye forskjell. To identisk genererte matriser som beskriver inngangen og målutgangen. Men hvis vi tar en titt på modellinitialiseringen.

Modellinitialisering:

# 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)), navn = 'W') y = W.dot (X) + b

Som du kan se her at TensorFlow ikke krever spesiell behandling av X- og Y-variabler. På den annen side krever Theano en ekstra innsats for å sikre at variablene er Symbolske innganger til funksjonen. Definisjonen av b og W er forklarende og også finere.

Læringen: Optimalisering

# Tensorflow tap = 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 (kostnad = kostnad, wrt = W) # (2) gradientB = T.grad (kostnad = kostnad, wrt = b) # (2) oppdateringer = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) tog = theano-funksjon (innganger = [X, Y], utganger = kostnad, oppdateringer = oppdateringer, allow_input_downcast = True) # (3)

For (1) MSE er nesten det samme for Theano vs TensorFlow.

hva er data blanding i tablå

For (2) Definere Optimizer er enkelt og enkelt som det blir i tilfelle TensorFlow, men Theanno gir deg mye kontroll over Optimizers, selv om det er ganske langt og øker Verifiseringsinnsatsen.

For (3) Treningsfunksjon koden er nesten lik

Treningsorgan:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) for trinn i xrange (0, 201): sess.run (train) # Theano for i in xrange (0, 201): tog (x_data, y_data) skriv ut W.get_value (), b.get_value ()

Koden for opplæring er nesten identisk, men innkapsling av grafutførelse i øktobjekt er Konseptuelt renere enn Theano.

Endelig dom: Theano vs TensorFlow

På en avsluttende merknad kan det sies at begge API-ene har en lignende grensesnitt . Men TensorFlow er relativt lettere du bruker, da det gir mange overvåkings- og feilsøkingsverktøy. Theano tar ledelsen Brukervennlighet og hastighet , men TensorFlow er bedre egnet for distribusjon. Papirarbeid eller Dokumentasjon for Theano er mer enn TensorFlow og TensorFlow er et nytt språk folk ikke har mange ressurser til å begynne med. Åpen kildekode-dypbiblioteker som Keras, Lasagne og Blocks har vært bygget på toppen av Theano.

Jeg håper denne sammenligningen var nok til at du bestemte deg for hvilket rammeverk du skulle velge, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Denne sertifiseringsopplæringen er kuratert av fagpersoner i bransjen i henhold til bransjens krav og krav. Du vil mestre konseptene som SoftMax-funksjon, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) og jobbe med biblioteker som Keras & TFLearn.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet i “Theano vs TensorFlow”, så kommer vi tilbake til deg.