Theano vs TensorFlow: быстрое сравнение фреймворков



Эта статья о Theano vs TensorFlow предоставит вам краткое и четкое сравнение двух фреймворков и поможет вам выбрать тот, который вам подходит.

Эпоха Глубокое обучение и находится на пике. Собирается создать 2,3 миллиона Вакансии к 2020 году. С появлением новых фреймворков каждый месяц, TensorFlow и Theano существуют уже некоторое время и также приобрели большую популярность. Итак, в этой статье Theano vs TensorFlow я буду обсуждать следующие темы:

Что такое Теано?

Theano можно определить как библиотеку для Научные вычисления . Он был разработан Université de Montréal и доступен с 2007 года.





theano-logo

Он позволяет вам эффективно определять, оптимизировать и оценивать математические выражения, включающие многомерные массивы. Он может работать как на 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», и мы свяжемся с вами.