Ерата на Дълбоко обучение и е на върха си. Ще създаде 2,3 милиона Работа до 2020 г. С нови рамки, които се появяват всеки месец, TensorFlow и Theano са там от известно време и също са спечелили голяма популярност. Така че в тази статия Theano срещу TensorFlow ще обсъждам следните теми:
- Какво е Theano?
- Какво е TensorFlow?
- Theano срещу Tensorflow
- Окончателна присъда: Theano срещу TensorFlow
Какво е Theano?
Theano може да се определи като библиотека за Научни изчисления . Той е разработен от Университета на Монреал и е достъпен от 2007 г.
Тя ви позволява ефективно да дефинирате, оптимизирате и оценявате математически изрази, включващи многомерни масиви. Може да работи както на процесор, така и на графичен процесор.
Какво е 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“ и ние ще се свържем с вас.