Theano vs TensorFlow: een snelle vergelijking van frameworks

Dit artikel over Theano vs TensorFlow geeft je een korte en duidelijke vergelijking tussen de twee Frameworks en helpt je er een te kiezen die bij je past.

Het tijdperk van Diep leren en is op zijn hoogtepunt. Het gaat creëren 2,3 miljoen Banen in 2020. Met elke maand nieuwe frameworks, zijn TensorFlow en Theano er al een tijdje en hebben ze ook behoorlijk wat populariteit gewonnen. Dus in dit Theano vs TensorFlow-artikel bespreek ik de volgende onderwerpen:

Wat is Theano?

Theano kan worden gedefinieerd als een bibliotheek voor Wetenschappelijk computergebruik . Het is ontwikkeld door de Université de Montréal en is sinds 2007 beschikbaar.



theano-logo

Hiermee kunt u wiskundige uitdrukkingen met multidimensionale arrays efficiënt definiëren, optimaliseren en evalueren. Het kan zowel op CPU als GPU draaien.

Wat is TensorFlow?

TensorFlow is een open-source softwarebibliotheek van Google Brain voor het programmeren van gegevensstromen voor een reeks taken.

Het is een symbolische wiskundebibliotheek die wordt gebruikt voor machine learning-toepassingen zoals .

Theano versus TensorFlow

We zullen Theano versus TensorFlow vergelijken op basis van de volgende statistieken:

Populariteit:

Theano TensorFlow
Theano is een oud Framework is niet zo populair tussen , Onderzoekers. Het was eensTensorFlow is zonder twijfel de beroemdste Deep Learning Framework en wordt in veel onderzoek gebruikt.

Uitvoeringssnelheid:

Theano TensorFlow
Voert taken sneller uit dan TensorFlow. Vooral de enkele GPU-taken werken razendsnel in Theano.De uitvoeringssnelheid van TensorFlow is langzamer in vergelijking met Theano, maar in Multi-GPU-taken neemt het de leiding.

Technologie voordelen:

Theano TensorFlow
Het ondersteunt een breed scala aan operaties.

Theano berekent de gradiënt bij het bepalen van de fout.

Je hebt volledige controle over Optimizers omdat je het hard moet coderen.

TensorFlow moet nog steeds op gelijke hoogte komen met Theano.

Dat is niet het geval voor TensorFlow

c ++ sorteermethode

Het geeft toegang tot veel goede Optimizers uit de doos. Dat maakt coderen eenvoudiger

Compatibiliteit:

Theano TensorFlow
Keras, een verbazingwekkende Deep Learning Library, is compatibel met Theano. Het integreert goed.

Het heeft native Windows-ondersteuning.

Het ondersteunt ook high-level wrappers zoals lasagne.

Maar in het geval van TensorFlow is het er nog niet helemaal. In v2.0 zal dit echter niet het geval zijn.

Momenteel mist TensorFlow deze ondersteuning.

Geen ondersteuning voor lasagne.

Maatschappelijke hulp:

Theano TensorFlow
Theano heeft grotere gemeenschapsondersteuning zoals het lang voor TensorFlow kwam.

Het heeft meer documentatie dan TensorFlow

De online community-ondersteuning van TensorFlow neemt snel toe met zijn populariteit.

Documentatie is relatief minder.

Code leesbaarheid:

Laten we Theano en TensorFlow vergelijken op basis van hun code. Hier neem ik een basisvoorbeeldscript waarin we enkele Phony-gegevens nemen en de beste pasvorm voor die gegevens initialiseren, zodat het toekomstige gegevenspunten kan voorspellen.

Theano-code:

importeer theano importeer theano.tensor als T importeer numpy # Nogmaals, maak 100 punten in numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Start het Theano-model 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 # Bereken de gradiënten WRT de gemiddelde kwadratische fout voor elke parameter kosten = T.mean (T.sqr (y - Y)) gradiëntW = T.grad (kosten = kosten, wrt = W) gradiëntB = T.grad (kosten = kosten, wrt = b) updates = [[W, W - gradiëntW * 0.5], [b, b - gradientB * 0.5]] train = theano.function (inputs = [X, Y], outputs = kosten, updates = updates, allow_input_downcast = True) voor i in xrange (0, 201): trein (x_data, y_data) print W.get_value (), b.get_value ()

Equivalente TensorFlow-code:

import tensorflow als tf import numpy als np # Maak 100 nepgegevenspunten in NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Willekeurige invoer y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Maak een lineair model. b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.willekeurige_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Minimaliseer de gekwadrateerde fouten. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (verlies) # Voor het initialiseren van de variabelen. init = tf.initialize_all_variables () # Start de grafiek sess = tf.Session () sess.run (init) # Pas het vlak aan. voor stap in xrange (0, 201): sess.run (train) if step% 20 == 0: print step, sess.run (W), sess.run (b) # Leert dat de beste pasvorm W is: [[0.100 0.200]], b: [0.300]

Lengte wijs Beide Code zijn bijna Vergelijkbaar er is niet veel verschil. Twee identiek gegenereerd arrays die de invoer en de doeluitvoer beschrijven. Maar als we de modelinitialisatie eens bekijken.

Model initialisatie:

# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.willekeurige_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)), naam = 'W') y = W.dot (X) + b

Zoals u hier kunt zien, vereist TensorFlow geen speciale behandeling van X- en Y-variabelen. Aan de andere kant vereist Theano een extra inspanning om ervoor te zorgen dat de variabelen dat wel zijn Symbolische invoer naar de functie. De definitie van b en W is verklarend en ook leuker.

Het leren: optimalisatie

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano-kosten = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (cost = cost, wrt = W) # (2) gradientB = T.grad (cost = cost, wrt = b) # (2) updates = [[W, W - gradiëntW * 0,5], [b, b - gradiëntB * 0,5]] # (2) trein = theano.function (inputs = [X, Y], outputs = kosten, updates = updates, allow_input_downcast = True) # (3)

Voor (1) het MSE is bijna hetzelfde voor Theano versus TensorFlow.

Voor (2) het definiëren van de Optimizer is gemakkelijk en eenvoudig in het geval van TensorFlow, maar Theanno geeft je veel controle over de Optimizers, hoewel het behoorlijk lang duurt en de verificatie-inspanning vergroot.

Voor 3) Trainingsfunctie de code is bijna gelijk

hoe php op Windows 10 te installeren

Trainingslichaam:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) voor stap in xrange (0, 201): sess.run (trein) # Theano voor i in xrange (0, 201): trein (x_data, y_data) print W.get_value (), b.get_value ()

De code voor training is bijna identiek, maar het inkapselen van de uitvoering van de grafiek in een sessieobject is dat wel Conceptueel schoner dan Theano.

Eindoordeel: Theano vs TensorFlow

Ter afsluiting kan worden gezegd dat beide API's een vergelijkbare interface . Maar TensorFlow is relatief gemakkelijker gebruik het omdat het veel monitoring- en debugging-tools biedt. Theano neemt de leiding over Bruikbaarheid en snelheid , maar TensorFlow is beter geschikt voor implementatie. Papierwerk of Documentatie want Theano is meer dan TensorFlow en TensorFlow is een nieuwe taal en mensen hebben om te beginnen niet veel middelen. Open-source deep-bibliotheken zoals Keras, Lasagne en Blocks zijn dat wel bovenop gebouwd Theano.

Ik hoop dat deze vergelijking voldoende was om te beslissen voor welk framework je moet kiezen, bekijk het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. Deze certificeringstraining wordt samengesteld door professionals uit de branche volgens de eisen en eisen van de branche. Je beheerst de concepten zoals SoftMax-functie, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) en werkt met bibliotheken zoals Keras en TFLearn.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van 'Theano vs TensorFlow' en we nemen zo spoedig mogelijk contact met u op.