Theano vs TensorFlow: En snabb jämförelse av ramar



Den här artikeln om Theano vs TensorFlow ger dig en kort och skarp jämförelse mellan de två ramarna och hjälper dig att välja en som passar dig.

Era av Djup lärning och är på topp. Det kommer att skapa 2,3 miljoner Jobb senast 2020. Med nya ramar som kommer upp varje månad har TensorFlow och Theano varit där ett tag och har vunnit en hel del popularitet också. Så i denna Theano vs TensorFlow-artikel kommer jag att diskutera följande ämnen:

Vad är Theano?

Theano kan definieras som ett bibliotek för Vetenskaplig databehandling . Den utvecklades av Université de Montréal och har funnits sedan 2007.





theano-logo

Det låter dig definiera, optimera och utvärdera matematiska uttryck som involverar flerdimensionella matriser effektivt. Den kan köras på både CPU och GPU.



Vad är TensorFlow?

TensorFlow är ett programvara med öppen källkod av Google Brain för dataflödesprogrammering över en rad uppgifter.

Det är ett symboliskt mattebibliotek som används för maskininlärningsapplikationer som .



php förvandla sträng till array

Theano vs TensorFlow

Vi jämför Theano vs TensorFlow baserat på följande mätvärden:

Popularitet:

Theano TensorFlow
Att vara en gammal ram är inte så populärt bland , Forskare. Det var en gång i tidenTensorFlow är utan tvekan mest känd Deep Learning Framework och används i mycket forskning.

Körningshastighet:

Theano TensorFlow
Utför uppgifter snabbare än TensorFlow. Speciellt de enskilda GPU-uppgifterna går snabbt i Theano.TensorFlows körningshastighet är långsammare jämfört med Theano, men i Multi-GPU-uppgifter tar det ledningen.

Tekniska fördelar:

Theano TensorFlow
Den stöder ett brett utbud av funktioner.

Theano beräknar lutningen när den bestämmer fel.

Du har full kontroll över Optimizers eftersom du måste hårdkoda det.

TensorFlow måste fortfarande komma i nivå med Theano.

Så är inte fallet för TensorFlow

Det ger tillgång till massor av bra Optimizers ur lådan. Vilket gör kodning enklare

Kompatibilitet:

Theano TensorFlow
Keras ett fantastiskt Deep Learning Library är kompatibelt med Theano. Det integreras bra.

Den har Native Windows Support.

Den stöder också högnivåförpackningar som lasagne.

Men i fallet med TensorFlow är det inte riktigt där än. Men i v2.0 kommer detta inte att vara fallet.

För närvarande saknar TensorFlow detta stöd.

Inget stöd för Lasagne.

Community-stöd:

Theano TensorFlow
Theano har Bigger Community Support när det kom före TensorFlow.

Den har mer dokumentation än TensorFlow

TensorFlows online community-support ökar snabbt med sin popularitet.

Dokumentationen är jämförelsevis mindre.

Kodläsbarhet:

Låt oss jämföra Theano vs TensorFlow baserat på deras kod. Här tar jag ett Basic Exempel Script där vi tar lite falska data och initierar den bästa passningen för den informationen så att den kan förutsäga framtida datapunkter.

Theano-kod:

importera theano importera theano.tensor som T import numpy # Gör igen 100 poäng i numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intialisera Theanomodellen 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)), name = 'W') y = W.dot (X) + b # Beräkna lutningarna WRT medelvärdet-kvadratfelet för varje parameterkostnad = T.mean (T.sqr (y - Y)) gradientW = T.grad (kostnad = kostnad, wrt = W) gradientB = T.grad (kostnad = kostnad, wrt = b) uppdateringar = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] train = theano.function (ingångar = [X, Y], utgångar = kostnad, uppdateringar = uppdateringar, allow_input_downcast = True) för i i xrange (0, 201): tåg (x_data, y_data) skriv ut W.get_value (), b.get_value ()

Motsvarande TensorFlow-kod:

importera tensorflöde som tf importera numpy som np # Gör 100 falska datapunkter i NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Slumpmässig ingång y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Konstruera en linjär modell. 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 # Minimera de kvadrerade felen. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # För att initialisera variablerna. init = tf.initialize_all_variables () # Starta grafen sess = tf.Session () sess.run (init) # Montera planet. för steg i xrange (0, 201): sess.run (train) om steg% 20 == 0: print step, sess.run (W), sess.run (b) # Lär sig bäst passa är W: [[0.100 0,200]], b: [0,300]

Längd Wise Båda koden är nästan Liknande det är inte mycket skillnad. Två identiskt genererade matriser som beskriver ingången och målutmatningen. Men om vi tittar på modellinitialiseringen.

Initiering av modell:

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

Som du kan se här kräver TensorFlow ingen speciell behandling av X- och Y-variabler. Å andra sidan kräver Theano en extra ansträngning för att se till att variablerna är Symboliska ingångar till funktionen. Definitionen av b och W är förklarande och också trevligare.

The Learning: Optimization

# Tensorflödesförlust = 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) uppdateringar = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) train = theano-funktionen (ingångar = [X, Y], utgångar = kostnad, uppdateringar = uppdateringar, allow_input_downcast = True) # (3)

För (1) MSE är nästan detsamma för Theano vs TensorFlow.

För (2) Definiera Optimizer är enkelt och enkelt som det blir i fallet med TensorFlow, men Theanno ger dig en hel del kontroll över Optimizers även om det är ganska lång och ökar Verification Effort.

För (3) Träningsfunktion koden är nästan lika

Träningskropp:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) för steg i xrange (0, 201): sess.run (train) # Theano för i i xrange (0, 201): tåg (x_data, y_data) skriv ut W.get_value (), b.get_value ()

Koden för utbildning är nästan identisk, men inkapsling av grafutförande i sessionsobjekt är Konceptuellt renare än Theano.

Slutlig dom: Theano vs TensorFlow

På en avslutande anteckning kan det sägas att båda API: erna har en liknande gränssnitt . Men TensorFlow är jämförelsevis lättare du använder eftersom det ger många övervaknings- och felsökningsverktyg. Theano tar ledningen Användbarhet och hastighet , men TensorFlow är bättre lämpad för distribution. Pappersarbete eller Dokumentation för Theano är mer än TensorFlow och TensorFlow är ett nytt språk människor har till att börja med inte många resurser. Open-source djupbibliotek som Keras, Lasagne och Blocks har varit byggt ovanpå Theano.

Jag hoppas att denna jämförelse räckte för att du kunde bestämma vilken ram du skulle välja, kolla in av Edureka, ett pålitligt online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Denna certifieringsutbildning är kuraterad av branschpersonal enligt branschens krav och krav. Du kommer att behärska begreppen som SoftMax-funktion, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) och arbeta med bibliotek som Keras & TFLearn.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i “Theano vs TensorFlow” så återkommer vi till dig.