Theano vs TensorFlow: En hurtig sammenligning af rammer



Denne artikel om Theano vs TensorFlow giver dig en kort og skarp sammenligning mellem de to rammer og hjælper dig med at vælge en, der passer dig.

Den æra af Dyb læring og er på sit højdepunkt. Det vil skabe 2,3 millioner Job inden 2020. Med nye rammer, der kommer op hver måned, har TensorFlow og Theano været der i et stykke tid og har også vundet en god popularitet. Så i denne Theano vs TensorFlow-artikel vil jeg diskutere følgende emner:

Hvad er Theano?

Theano kan defineres som et bibliotek til Videnskabelig databehandling . Det blev udviklet af Université de Montréal og har været tilgængeligt siden 2007.





theano-logo

Det giver dig mulighed for effektivt at definere, optimere og evaluere matematiske udtryk, der involverer flerdimensionelle arrays. Det kan køre på både CPU og GPU.



Hvad er TensorFlow?

TensorFlow er et open source-softwarebibliotek fra Google Brain til dataflowprogrammering på tværs af en række opgaver.

Det er et symbolsk matematikbibliotek, der bruges til maskinlæringsapplikationer som f.eks .



Theano vs TensorFlow

Vi sammenligner Theano vs TensorFlow baseret på følgende målinger:

Popularitet:

Theano TensorFlow
Det at være en gammel ramme er ikke så populær blandt , Forskere. Det var engangTensorFlow er hænderne ned mest berømte Deep Learning Framework og bruges i meget forskning.

Udførelseshastighed:

Theano TensorFlow
Udfører opgaver hurtigere end TensorFlow. Især de enkelte GPU-opgaver kører meget hurtigt i Theano.TensorFlow's udførelseshastighed er langsommere sammenlignet med Theano, men i Multi-GPU-opgaver tager det føringen.

Tekniske fordele:

Theano TensorFlow
Det understøtter en bred vifte af operationer.

Theano beregner gradienten ved bestemmelse af fejl.

Du har fuld kontrol over Optimizers, da du skal hårdkode det.

TensorFlow skal stadig være på niveau med Theano.

Det er ikke tilfældet for TensorFlow

Det giver adgang til mange gode Optimizers ud af kassen. Hvilket gør kodning lettere

Kompatibilitet:

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

er git og github det samme

Det har Native Windows Support.

Det understøtter også højniveauindpakninger som Lasagne.

Men i tilfælde af TensorFlow er det ikke helt der endnu. I v2.0 vil dette dog ikke være tilfældet.

I øjeblikket mangler TensorFlow denne support.

Ingen støtte til Lasagne.

Community Support:

Theano TensorFlow
Theano har større fællesskabsstøtte, som det kom før TensorFlow.

spørgsmål til Google Data Scientist Interview

Det har mere dokumentation end TensorFlow

TensorFlow's Online Community Support øges hurtigt med sin popularitet.

Dokumentation er forholdsvis mindre.

Kodelæsbarhed:

Lad os sammenligne Theano vs TensorFlow baseret på deres kode. Her tager jeg et grundlæggende eksempel-script, hvor vi tager nogle falske data og initialiserer den bedste pasform til disse data, så det kan forudsige fremtidige datapunkter.

Theano-kode:

import theano import theano.tensor som T import numpy # Foretag igen 100 point 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 gradienterne WRT middel-kvadrat-fejlen for hver parameteromkostning = T.mean (T.sqr (y - Y)) gradientW = T.grad (omkostning = omkostning, wrt = W) gradientB = T.grad (omkostning = pris, wrt = b) opdateringer = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] tog = theano.function (input = [X, Y], output = pris, opdateringer = opdateringer, allow_input_downcast = True) for i i xrange (0, 201): tog (x_data, y_data) udskriv W.get_value (), b.get_value ()

Ækvivalent TensorFlow-kode:

importer tensorflow som tf import numpy som np # Lav 100 falske datapunkter i NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Tilfældig input y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Konstruer en lineær model. b = tf. variabel (tf. nuller ([1])) W = tf. variabel (tf. tilfældig_uniform ([1, 2], -1,0, 1,0)) y = tf. matmul (W, x_data) + b # Minimer de kvadrerede fejl. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Til initialisering af variablerne. init = tf.initialize_all_variables () # Start grafen sess = tf.Session () sess.run (init) # Tilpas planet. for trin i xrange (0, 201): sess.run (tog) hvis trin% 20 == 0: print trin, sess.run (W), sess.run (b) # Lærer bedst pasform er W: [[0.100 0.200]], b: [0.300]

Længde klog Begge koder er næsten Lignende der er ikke meget forskel. To identisk-genererede arrays, der beskriver input og måloutput. Men hvis vi ser på modelinitialiseringen.

Modelinitialisering:

# 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, kræver TensorFlow ingen speciel behandling af X- og Y-variabler. På den anden side kræver Theano en ekstra indsats for at sikre, at variablerne er Symbolske indgange til funktionen. Definitionen af ​​b og W er forklarende og også pænere.

Læringen: Optimering

# Tensorflowtab = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimere (tab) # (3) # Theano omkostninger = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (omkostning = omkostning, wrt = W) # (2) gradientB = T.grad (omkostning = omkostning, wrt = b) # (2) opdateringer = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) tog = theano.function (input = [X, Y], output = omkostning, opdateringer = opdateringer, allow_input_downcast = True) # (3)

For (1) MSE er næsten det samme for Theano vs TensorFlow.

For (2) Definition af Optimizer er let og simpelt, som det bliver tilfældet i tilfælde af TensorFlow, men Theanno giver dig en hel del kontrol over Optimizers, selvom det er ret langt og øger verifikationsindsatsen.

Til (3) Træningsfunktion koden er næsten ens

Træningsorgan:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) for trin i xrange (0, 201): sess.run (tog) # Theano for i i xrange (0, 201): tog (x_data, y_data) udskriv W.get_value (), b.get_value ()

Koden til træning er næsten identisk, men indkapsling af grafudførelse i sessionsobjekt er Konceptuelt renere end Theano.

Endelig dom: Theano vs TensorFlow

På en afsluttende note kan det siges, at begge API'er har en lignende interface . Men TensorFlow er forholdsvis lettere du bruger, da det giver mange overvågnings- og fejlretningsværktøjer. Theano tager føringen ind Brugervenlighed og hastighed , men TensorFlow er bedre egnet til implementering. Papirarbejde eller Dokumentation for Theano er mere end TensorFlow og TensorFlow er et nyt sprog, folk har ikke mange ressourcer til at begynde med. Open source dybbiblioteker som Keras, Lasagne og Blocks har været bygget oven på Theano.

Jeg håber, at denne sammenligning var nok til, at du kunne beslutte, hvilken ramme du skulle vælge, tjek af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Denne certificeringstræning er kurateret af fagfolk i branchen i henhold til branchens krav og krav. Du mestrer koncepterne som SoftMax-funktion, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) og arbejder med biblioteker som Keras & TFLearn.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i “Theano vs TensorFlow”, så vender vi tilbage til dig.