Theano срещу TensorFlow: Бързо сравнение на рамки



Тази статия за Theano срещу TensorFlow ще ви предостави кратко и ясно сравнение между двете рамки и ще ви помогне да изберете такава, която ви подхожда.

Ерата на Дълбоко обучение и е на върха си. Ще създаде 2,3 милиона Работа до 2020 г. С нови рамки, които се появяват всеки месец, TensorFlow и Theano са там от известно време и също са спечелили голяма популярност. Така че в тази статия Theano срещу TensorFlow ще обсъждам следните теми:

Какво е Theano?

Theano може да се определи като библиотека за Научни изчисления . Той е разработен от Университета на Монреал и е достъпен от 2007 г.





theano-logo

Тя ви позволява ефективно да дефинирате, оптимизирате и оценявате математически изрази, включващи многомерни масиви. Може да работи както на процесор, така и на графичен процесор.



Какво е TensorFlow?

TensorFlow е софтуерна библиотека с отворен код на Google Brain за програмиране на потока от данни за редица задачи.

c ++ как да сортира масив

Това е символична математическа библиотека, която се използва за приложения за машинно обучение като .



Theano срещу TensorFlow

Ще сравним Theano срещу TensorFlow въз основа на следните показатели:

Популярност:

Теано TensorFlow
Theano като стара рамка е не толкова популярен между , Изследователи. Беше едно времеTensorFlow е с ръце надолу Най-известният Deep Learning Framework и се използва в много изследвания.

Скорост на изпълнение:

Теано TensorFlow
Изпълнява задачи по-бързо от TensorFlow. Особено единичните GPU Tasks се изпълняват много бързо в Theano.Скоростта на изпълнение на TensorFlow е по-бавна в сравнение с Theano, но в Multi-GPU Tasks тя е водеща.

Технологични предимства:

Теано TensorFlow
Той поддържа широк спектър от операции.

Теано изчислява градиента при определяне на грешка.

Имате пълен контрол над оптимизаторите, тъй като трябва да го кодирате твърдо.

TensorFlow все още трябва да се изравнява с Theano.

Това не е така за TensorFlow

Той дава достъп до много добри оптимизатори от кутията. Което прави кодирането по-лесно

Съвместимост:

Теано TensorFlow
Удивителната библиотека за дълбоко обучение Keras е съвместима с Theano. Интегрира се добре.

Той има поддръжка на Native Windows.

Той също така поддържа обвивки на високо ниво като лазаня.

Но в случай на TensorFlow, все още не е там. В версия 2.0 обаче това няма да е така.

В момента на TensorFlow липсва тази поддръжка.

Няма поддръжка за лазаня.

Подкрепа от общността:

Теано TensorFlow
Theano има по-голяма подкрепа от общността, както се появи преди TensorFlow.

Той има повече документация, отколкото TensorFlow

Онлайн поддръжката на общността на TensorFlow се увеличава бързо със своята популярност.

как да стана разработчик на таблици

Документацията е сравнително по-малка.

Код за четене:

Нека сравним Theano срещу TensorFlow въз основа на техния код. Тук взимам основен примерен скрипт, където ще вземем някои данни на Phony и ще инициализираме най-подходящите за тези данни, така че да може да предскаже бъдещи точки от данни.

Кодът на Теано:

какво е ехо в php
import theano import theano.tensor като T import numpy # Отново направете 100 точки в numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Инициализирайте модела 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 # Изчислете градиентите WRT средната квадратична грешка за всеки параметър цена = T.mean (T.sqr (y - Y)) градиентW = T.grad (разходи = разходи, wrt = W) градиентB = T.grad (разходи = разходи, wrt = b) актуализации = [[W, W - градиентW * 0.5], [b, b - градиентB * 0.5]] train = theano.function (inputs = [X, Y], outputs = разходи, актуализации = актуализации, allow_input_downcast = True) за i в xrange (0, 201): train (x_data, y_data) print wget_value (), b.get_value ()

Еквивалентен TensorFlow код:

import tensorflow as tf import numpy as np # Направете 100 фалшиви точки от данни в NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Случайно въведени y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Постройте линеен модел. 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 # Минимизирайте квадратните грешки. загуба = tf.reduce_mean (tf.square (y - y_data)) оптимизатор = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (загуба) # За инициализиране на променливите. init = tf.initialize_all_variables () # Стартирайте графиката sess = tf.Session () sess.run (init) # Поставете равнината. за стъпка в xrange (0, 201): sess.run (влак), ако стъпка% 20 == 0: стъпка за печат, sess.run (W), sess.run (b) # Научава, че най-добре е W: [[0,100 0.200]], b: [0.300]

Дължина Мъдър И двата кодекса са почти Подобен няма голяма разлика. Две еднакво генерирани масиви, описващи входа и целевия изход. Но ако разгледаме инициализацията на модела.

Инициализация на модела:

# 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

Както можете да видите тук, че TensorFlow не изисква специално третиране на X и Y променливи. От друга страна, Theano изисква допълнителни усилия, за да се увери, че променливите са Символни входове към функцията. Определенията за b и W са обяснителни и също така по-хубави.

Обучението: Оптимизация

# Tensorflow загуба = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano разходи = T.mean (T.sqr (y - Y)) # (1) градиентW = T.grad (разходи = разходи, wrt = W) # (2) градиентB = T.grad (разходи = стойност, wrt = b) # (2) актуализации = [[W, W - градиентW * 0,5], [b, b - градиентB * 0,5]] # (2) влак = theano.function (входове = [X, Y], изходи = разходи, актуализации = актуализации, allow_input_downcast = Вярно) # (3)

За (1) MSE е почти същото за Theano срещу TensorFlow.

За (2) Определяне на Оптимизатор е лесно и просто, както се получава в случай на TensorFlow, но Theanno ви дава много контрол над явните оптимизатори, въпреки че е доста дълъг и увеличава усилията за проверка.

За (3) Функция за обучение кодексът е почти подобен

Тренировъчно тяло:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) за стъпка в xrange (0, 201): sess.run (train) # Theano за i in xrange (0, 201): train (x_data, y_data) print wget_value (), b.get_value ()

Кодът за обучение е почти идентичен, но капсулирането на изпълнението на графика в обект на сесия е Концептуално по-чист отколкото Теано.

Окончателна присъда: Theano срещу TensorFlow

В заключителна бележка може да се каже, че и двата API имат подобен интерфейс . Но TensorFlow е сравнително по-лесно Можете да използвате, тъй като предоставя много инструменти за наблюдение и отстраняване на грешки. Теано поема водещата роля Използваемост и скорост , но TensorFlow е по-подходящ за внедряване. Документи или Документация защото Theano е нещо повече от TensorFlow и TensorFlow е нов език, като за начало хората нямат много ресурси. Дълбоките библиотеки с отворен код като Keras, Lasagne и Blocks са били построена на върха на Теано.

Надявам се, че това сравнение беше достатъчно, за да решите коя рамка да изберете, разгледайте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Това обучение за сертифициране е подготвено от професионалисти в бранша според изискванията и изискванията на бранша. Ще овладеете понятията като функцията SoftMax, автокодиращи невронни мрежи, ограничена машина на Boltzmann (RBM) и ще работите с библиотеки като Keras & TFLearn.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на „Theano срещу TensorFlow“ и ние ще се свържем с вас.