Эпоха Глубокое обучение и находится на пике. Собирается создать 2,3 миллиона Вакансии к 2020 году. С появлением новых фреймворков каждый месяц, TensorFlow и Theano существуют уже некоторое время и также приобрели большую популярность. Итак, в этой статье Theano vs TensorFlow я буду обсуждать следующие темы:
- Что такое Теано?
- Что такое TensorFlow?
- Теано против Tensorflow
- Окончательный вердикт: Theano против TensorFlow
Что такое Теано?
Theano можно определить как библиотеку для Научные вычисления . Он был разработан Université de Montréal и доступен с 2007 года.
Он позволяет вам эффективно определять, оптимизировать и оценивать математические выражения, включающие многомерные массивы. Он может работать как на CPU, так и на GPU.
Что такое TensorFlow?
TensorFlow - это программная библиотека с открытым исходным кодом от Google Brain для программирования потоков данных для решения ряда задач.
Это символьная математическая библиотека, которая используется для приложений машинного обучения, таких как .
Теано против TensorFlow
Мы сравним Theano и TensorFlow на основе следующих показателей:
Популярность:
Theano | TensorFlow |
Theano - старый фреймворк не так популярно среди , Исследователи. Это было когда-то давно | TensorFlow безоговорочно самый знаменитый Deep Learning Framework и используется во многих исследованиях. |
Скорость исполнения:
Theano | TensorFlow |
Выполняет задачи быстрее, чем TensorFlow. Особенно быстро выполняются задачи с одним GPU в Theano. | Скорость выполнения TensorFlow ниже по сравнению с Theano, но в задачах с несколькими графическими процессорами он выходит вперед. |
Преимущества технологии:
Theano | TensorFlow |
Он поддерживает широкий спектр операций.как установить путь к классам в Java в Windows 10 Theano вычисляет градиент при определении ошибка. У вас есть полный контроль над оптимизаторами, так как вам нужно жестко их кодировать. | TensorFlow все еще должен быть на одном уровне с Theano. Это не относится к TensorFlow. Он дает доступ ко множеству хороших оптимизаторов из коробки. Что упрощает программирование |
Совместимость:
Theano | TensorFlow |
Керас - удивительная библиотека глубокого обучения, совместимая с Theano. Он хорошо интегрируется. Имеет встроенную поддержку Windows. Он также поддерживает высокоуровневые оболочки, такие как Lasagne. | Но в случае с TensorFlow этого еще нет. Однако в версии 2.0 этого не произойдет. В настоящее время у TensorFlow нет этой поддержки. Нет поддержки для лазаньи. |
Поддержка сообщества:
Theano | TensorFlow |
Theano имеет большую поддержку сообщества, поскольку она была задолго до TensorFlow. У него больше документации, чем у TensorFlow | Поддержка онлайн-сообщества TensorFlow быстро растет с его популярностью. Документации сравнительно меньше. |
Читаемость кода:
Давайте сравним Theano и TensorFlow на основе их кода. Здесь я беру базовый пример сценария, в котором мы берем некоторые фальшивые данные и инициализируем наиболее подходящие для них данные, чтобы он мог предсказать будущие точки данных.
повар против ансибля против марионетки
Кодекс Theano:
import theano import theano.tensor as 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 как среднеквадратичную ошибку для каждого параметра cost = T.mean (T.sqr (y - Y)) gradientW = 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 (вводы = [X, Y], выводы = стоимость, обновления = обновления, allow_input_downcast = True) для i в xrange (0, 201): поезд (x_data, y_data) печать W.get_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 # Минимизируйте квадратичные ошибки. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Для инициализации переменных. init = tf.initialize_all_variables () # Запускаем граф sess = tf.Session () sess.run (init) # Подгоняем плоскость. for step in xrange (0, 201): sessions.run (train) if step% 20 == 0: print step, sessions.run (W), sess.run (b) # Лучше всего подходит W: [[0.100 0.200]], b: [0.300]
Длина Мудрая Оба Кодекса почти Аналогичный нет большой разницы. Два идентично сгенерированных массивы, описывающие ввод, и целевой вывод. Но если мы посмотрим на Model Initialization.
Инициализация модели:
# 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 более понятны и приятны.
Обучение: оптимизация
# Потеря тензорного потока = 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) gradientW = T.grad (cost = cost, wrt = W) # (2) gradientB = T.grad (cost = cost, wrt = b) # (2) updates = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) train = theano.function (входы = [X, Y], выходы = стоимость, обновления = обновления, allow_input_downcast = True) # (3)
Для (1) MSE почти то же самое для Theano vs TensorFlow.
Для (2) определения Оптимизатор легко и просто, как и в случае с TensorFlow, но Theanno дает вам большой контроль над оптимизаторами, хотя он довольно длительный и увеличивает усилия по проверке.
Для (3) Функция обучения Код почти аналогичен
Тренировочное тело:
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sessions.run (init) для шага в xrange (0, 201): sessions.run (train) # Theano for i в xrange (0, 201): поезд (x_data, y_data) печать W.get_value (), b.get_value ()
Код для обучения почти идентичен, но инкапсуляция выполнения графика в объекте сеанса Концептуально чище чем Теано.
Окончательный вердикт: Theano против TensorFlow
В заключение можно сказать, что оба API имеют аналогичный интерфейс . Но TensorFlow сравнительно Полегче Вы можете использовать его, поскольку он предоставляет множество инструментов для мониторинга и отладки. Theano берет на себя инициативу Юзабилити и Скорость , но TensorFlow лучше подходит для развертывания. Оформление документов или Документация Поскольку Theano - это больше, чем TensorFlow и TensorFlow, поскольку это новый язык, у людей с самого начала не так много ресурсов. Глубокие библиотеки с открытым исходным кодом, такие как Keras, Lasagne и Blocks, были построен на вершине Теано.
Надеюсь, этого сравнения было достаточно, чтобы вы решили, какой фреймворк выбрать. от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Это сертификационное обучение проводится профессионалами отрасли в соответствии с отраслевыми требованиями и требованиями. Вы освоите такие концепции, как функция SoftMax, нейронные сети автоэнкодера, ограниченная машина Больцмана (RBM) и будете работать с такими библиотеками, как Keras и TFLearn.
Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев «Theano vs TensorFlow», и мы свяжемся с вами.