Theano vs TensorFlow: szybkie porównanie struktur



Ten artykuł na temat Theano vs TensorFlow zapewni krótkie i wyraźne porównanie między tymi dwoma Frameworkami i pomoże wybrać taki, który Ci odpowiada.

Era Głęboka nauka i jest na szczycie. To będzie tworzyć 2,3 miliona Miejsca pracy do 2020 r. Nowe frameworki pojawiają się co miesiąc, TensorFlow i Theano są tam od jakiegoś czasu i również zyskały sporą popularność. Dlatego w tym artykule Theano vs TensorFlow omówię następujące tematy:

Co to jest Theano?

Theano można zdefiniować jako bibliotekę dla Informatyka naukowa . Został opracowany przez Université de Montréal i jest dostępny od 2007 roku.





theano-logo

Umożliwia efektywne definiowanie, optymalizowanie i ocenianie wyrażeń matematycznych obejmujących tablice wielowymiarowe. Może działać zarówno na CPU, jak i GPU.



Co to jest TensorFlow?

TensorFlow to biblioteka oprogramowania typu open source opracowana przez Google Brain do programowania przepływu danych w szeregu zadań.

Jest to symboliczna biblioteka matematyczna używana w aplikacjach uczenia maszynowego, takich jak .



Theano vs TensorFlow

Porównamy Theano i TensorFlow na podstawie następujących wskaźników:

Popularność:

zainstaluj php w systemie Windows 7

Theano TensorFlow
Theano to stary Framework nie tak popularne pośród , Badacze. To było kiedyśTensorFlow jest bez dwóch zdań najbardziej znany Deep Learning Framework i jest używany w wielu badaniach.

Szybkość wykonania:

Theano TensorFlow
Wykonuje zadania szybciej niż TensorFlow. Zwłaszcza pojedyncze zadania GPU działają bardzo szybko w Theano.Szybkość wykonywania TensorFlow jest wolniejsza w porównaniu z Theano, ale w zadaniach z wieloma GPU przejmuje wiodącą rolę.

Korzyści technologiczne:

Theano TensorFlow
Obsługuje szeroki zakres operacji.

Theano oblicza gradient podczas określania błąd.

Masz pełną kontrolę nad optymalizatorami, ponieważ musisz go na stałe zakodować.

TensorFlow nadal musi dorównać Theano.

Tak nie jest w przypadku TensorFlow

Daje dostęp do wielu dobrych optymalizatorów po wyjęciu z pudełka. Co sprawia, że ​​kodowanie jest łatwiejsze

Zgodność:

Theano TensorFlow
Keras, niesamowita biblioteka Deep Learning jest kompatybilna z Theano. Dobrze się integruje.

Ma natywną obsługę systemu Windows.

jak zapobiec zakleszczeniu w java

Obsługuje również owijarki wysokiego poziomu, takie jak Lasagne.

Ale w przypadku TensorFlow jeszcze go nie ma. Jednak w wersji 2.0 tak się nie stanie.

Obecnie TensorFlow nie obsługuje tej obsługi.

Brak obsługi Lasagne.

Społeczność:

Theano TensorFlow
Theano ma większe wsparcie społeczności, ponieważ pojawiło się na długo przed TensorFlow.

Ma więcej dokumentacji niż TensorFlow

Wsparcie społeczności online TensorFlow szybko rośnie wraz ze wzrostem popularności.

Dokumentacja jest stosunkowo mniejsza.

Czytelność kodu:

Porównajmy Theano i TensorFlow na podstawie ich kodu. Tutaj biorę podstawowy skrypt przykładowy, w którym weźmiemy trochę fałszywych danych i zainicjujemy najlepsze dopasowanie do tych danych, aby można było przewidzieć przyszłe punkty danych.

Kod Theano:

import theano import theano.tensor as T import numpy # Ponownie zrób 100 punktów w numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Zainicjuj model 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)), name = 'W') y = W.dot (X) + b # Oblicz gradienty WRT średni kwadrat-błąd dla każdego parametru koszt = T.mean (T.sqr (y - Y)) gradient W = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) updates = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] train = theano.function (input = [X, Y], output = cost, updates = updates, allow_input_downcast = True) for i in xrange (0, 201): train (x_data, y_data) print W.get_value (), b.get_value ()

Równoważny kod TensorFlow:

import tensorflow as tf import numpy as np # Stwórz 100 fałszywych punktów danych w NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Losowe dane wejściowe y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Skonstruuj model liniowy. 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 # Zminimalizuj kwadratowe błędy. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Do inicjalizacji zmiennych. init = tf.initialize_all_variables () # Uruchom wykres sess = tf.Session () sess.run (init) # Dopasuj samolot. dla step in xrange (0, 201): sess.run (train) if step% 20 == 0: print step, sess.run (W), sess.run (b) # Uczy się, że najlepiej pasuje W: [[0,100 0,200]], b: [0,300]

Długość mądra Zarówno Kodeks jest prawie Podobny nie ma dużej różnicy. Dwa identycznie wygenerowane tablice opisujące dane wejściowe i docelowe dane wyjściowe. Ale jeśli spojrzymy na inicjalizację modelu.

Inicjalizacja modelu:

pl sql tutorial dla początkujących
# 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)), name = 'W') y = W.dot (X) + b

Jak widać tutaj, TensorFlow nie wymaga specjalnego traktowania zmiennych X i Y. Z drugiej strony Theano wymaga dodatkowego wysiłku, aby upewnić się, że zmienne są Symboliczne dane wejściowe do funkcji. Definicje b i W są wyjaśniające, a także ładniejsze.

Nauka: optymalizacja

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (strata) # (3) # Koszt Theano = T.mean (T.sqr (y - Y)) # (1) gradient W = T.grad (koszt = koszt, wrt = W) # (2) gradientB = T.grad (koszt = koszt, wrt = b) # (2) aktualizacje = [[W, W - gradientW * 0,5], [b, b - gradientB * 0,5]] # (2) pociąg = theano.function (input = [X, Y], output = cost, updates = aktualizacje, allow_input_downcast = True) # (3)

Dla (1) MSE jest prawie taki sam dla Theano vs TensorFlow.

Dla (2) Definiowanie Optimizer jest łatwe i proste, jak to się dzieje w przypadku TensorFlow, ale Theanno zapewnia znaczną kontrolę nad optymalizatorami, chociaż jest dość długi i zwiększa wysiłek weryfikacyjny.

Dla 3) Funkcja treningowa Kodeks jest prawie podobny

Ciało treningowe:

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

Kod szkolenia jest prawie identyczny, ale hermetyzacja wykonania wykresu w obiekcie sesji jest Koncepcyjnie czystszy niż Theano.

Ostateczny werdykt: Theano kontra TensorFlow

Podsumowując, można powiedzieć, że oba interfejsy API mają rozszerzenie podobny interfejs . Ale TensorFlow jest porównywalny łatwiej używasz, ponieważ zapewnia wiele narzędzi do monitorowania i debugowania. Theano przejmuje inicjatywę Użyteczność i szybkość , ale TensorFlow lepiej nadaje się do wdrażania. Formalności lub Dokumentacja ponieważ Theano to coś więcej niż tylko TensorFlow i TensorFlow jako nowy język, ludzie nie mają na początek wielu zasobów. Głębokie biblioteki open source, takie jak Keras, Lasagne i Blocks zbudowany na Theano.

Mam nadzieję, że to porównanie wystarczyło, abyś zdecydował, którą platformę wybrać, sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. To szkolenie certyfikacyjne jest nadzorowane przez profesjonalistów z branży, zgodnie z wymaganiami i wymaganiami branży. Opanujesz koncepcje, takie jak funkcja SoftMax, sieci neuronowe Autoencoder, Restricted Boltzmann Machine (RBM) i będziesz pracować z bibliotekami takimi jak Keras i TFLearn.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy w „Theano vs TensorFlow”, a my skontaktujemy się z Tobą.