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?
- Co to jest TensorFlow?
- Theano vs Tensorflow
- Ostateczny werdykt: Theano kontra TensorFlow
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.
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ą.