Из Deepsense.ai, Рафала Якубаниса, Петра Мигдала, составлено Heart of the Machine.
«Как выбрать первый фреймворк глубокого обучения» всегда было головной болью для новичков. В этой статье исследователи из deepsense.ai дают свои ответы о высокоуровневых фреймворках. В сравнении Keras и PyTorch авторы также приводят результаты бенчмарков производительности одной и той же нейросети в разных фреймворках. В настоящее время Keras имеет более 31 000 звезд на GitHub, а PyTorch, который появился позже, имеет почти 17 000 звезд.
Стоит отметить, что хотя PyTorch был выпущен в версии 0.4 в конце апреляДобавлена поддержка Windows., но между стабильностью Keras и TensorFlow в Windows все еще есть небольшой разрыв.
Ссылки на два фреймворка:
- Керас:GitHub.com/КРАС-команда/…
- ПиТорч:GitHub.com/py torch/Пак Ючон…
Хотите научиться глубокому обучению? Вы хотите применить глубокое обучение в своем бизнесе, начать дополнительный бизнес с помощью глубокого обучения или просто получить навыки, соответствующие рынку? Какой бы ни была цель, выбор правильной среды глубокого обучения — это первый шаг к ее достижению.
Мы настоятельно рекомендуем вам выбрать Keras или PyTorch. Это очень мощные инструменты, с которыми интересно учиться и экспериментировать. Мы думаем с точки зрения учителей и учеников. Автор этой статьи Петр провел семинары по Keras и PyTorch на предприятии, а Рафал изучает оба фреймворка.
Введение
Keras и PyTorch — это платформы с открытым исходным кодом для глубокого обучения, которые популярны среди специалистов по данным.
- Keras — это высокоуровневый API, способный работать в TensorFlow, CNTK, Theano или MXNet (или как tf.contrib в TensorFlow). Keras был впервые выпущен в марте 2015 года и с тех пор быстро развивался благодаря простоте использования и синтаксической простоте. Keras — это фреймворк, поддерживаемый Google.
- PyTorch дляВыпущено в январе 2017 г., — это низкоуровневый API, предназначенный для непосредственной обработки выражений массива. В прошлом году ему уделялось много внимания как предпочтительному решению для академических исследований и приложений глубокого обучения, которым необходимо оптимизировать пользовательские выражения. Это фреймворк, поддерживаемый Facebook.
Прежде чем обсуждать особенности этих двух, мы хотели бы заявить, что у нас нет прямого ответа на вопрос, какой фреймворк лучше. Какой фреймворк выбрать, в конечном итоге зависит от вашего технического опыта, потребностей и ожиданий. Эта статья призвана помочь вам лучше понять, когда следует выбирать Keras или PyTorch.
резюме в одном предложении
Keras легче изучать и экспериментировать со стандартными слоями, plug-and-play; PyTorch предлагает низкоуровневый подход с большей гибкостью для пользователей с большим математическим образованием.
Так почему бы не использовать другой фреймворк?
В этой статье не обсуждаются плюсы и минусы выбора TensorFlow в качестве предпочтительной среды глубокого обучения, поскольку мы считаем, что TensorFlow менее удобен для новичков, чем Keras (официальная высокоуровневая библиотека TensorFlow) и PyTorch. Хотя вы можете найти несколько руководств по Theano, он больше не находится в активной разработке. Caffe не хватает гибкости, Torch использует язык Lua (однако его очень сложно переписать :) ). MXNet, Chainer и CNTK в настоящее время используются менее широко.
Keras против PyTorch: простота использования и гибкость
Keras и PyTorch работают на разных уровнях абстракции.
Keras — это платформа более высокого уровня, которая инкапсулирует часто используемые уровни и операции глубокого обучения в четкие строительные блоки размером с Lego, освобождая специалистов по данным от сложностей глубокого обучения.
PyTorch предоставляет относительно низкоуровневую экспериментальную среду, предоставляя пользователям больше свободы для написания пользовательских слоев и просмотра задач численной оптимизации. Разработка сложных архитектур становится более простой, когда вы можете использовать всю мощь Python для доступа к ядру всех используемых функций. Это, естественно, происходит за счет многословия.
Давайте сравним их с простыми свёрточными сетями, определёнными в Keras и PyTorch:
Keras
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPool2D())
model.add(Conv2D(16, (3, 3), activation='relu'))
model.add(MaxPool2D())
model.add(Flatten())
model.add(Dense(10, activation='softmax'))
PyTorch
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 32, 3)
self.conv2 = nn.Conv2d(32, 16, 3)
self.fc1 = nn.Linear(16 * 6 * 6, 10)
self.pool = nn.MaxPool2d(2, 2)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 6 * 6)
x = F.log_softmax(self.fc1(x), dim=-1)
return x
model = Net()
Фрагмент кода выше показывает небольшую разницу между двумя фреймворками. Что касается обучения модели, то оно занимает около 20 строк кода в PyTorch и всего одну строку в Keras. Ускорение графического процессора обрабатывается в Keras неявно, тогда как PyTorch требует от нас указать, когда следует перемещать данные между ЦП и ГП.
Если вы новичок в этом, Keras может иметь явные преимущества в качестве фреймворка более высокого уровня. Keras действительно более удобочитаем и лаконичен, позволяя пользователям пропускать некоторые детали реализации и быстрее создавать свои первые сквозные модели глубокого обучения. Однако игнорирование этих деталей ограничивает возможности пользователей для изучения внутренней работы каждого вычислительного модуля в конвейере глубокого обучения. Использование PyTorch предоставляет больше возможностей для более глубокого осмысления основных концепций глубокого обучения, таких как обратное распространение и другие процедуры обучения.
Тем не менее, хотя Keras намного проще, чем PyTorch, это ни в коем случае не «игрушка», это серьезный инструмент глубокого обучения как для начинающих, так и для опытных специалистов по данным.
Например, в соревновании Kaggle по обнаружению спутниковых изображений DSTL все решения трех лучших команд использовали Keras, а четвертое место (команда deepsense.ai) использовало PyTorch и Keras.
Стоит подумать, нужна ли вашему приложению для глубокого обучения больше гибкости, чем может предоставить Keras. В зависимости от ваших потребностей, следуя правилу наименьшей мощности, Keras может стать идеальным решением.
в заключении
- Keras: более лаконичный и простой API
- PyTorch: более гибкий и побуждает пользователей к более глубокому пониманию концепций глубокого обучения.
Keras против PyTorch: популярность и доступные учебные ресурсы
Популярность фреймворка связана не только с простотой использования, но также важна поддержка сообщества — учебные пособия, кодовые базы и дискуссионные группы. По состоянию на июнь 2018 года популярность Keras и PyTorch растет как в документах GitHub, так и в документах arXiv (обратите внимание, что в большинстве документов, в которых упоминается Keras, также упоминается его бэкэнд TensorFlow). Согласно KDnuggets, Keras и PyTorch являются самыми быстрорастущими инструментами для обработки данных.
Хотя документация для обеих платформ лучше, поддержка сообщества PyTorch сильнее: стоит посетить его доски обсуждений, где вы можете найти ответы, которые вы не найдете в документации или StackOverflow.
Мы обнаружили, что курсы глубокого обучения на основе Keras для начинающих проще, чем курсы на основе PyTorch, что делает первые более доступными для начинающих. Читаемость кода Keras и непревзойденная простота использования сделали его широко используемым энтузиастами глубокого обучения, учителями и чемпионами Kaggle.
Отличные ресурсы Keras и примеры курсов глубокого обучения см. в статье Петра Мигдала «Начало практического обучения глубокому обучению: классификация изображений на CIFAR-10» и в книге «Глубокое обучение с помощью Python» создателя Keras Франсуа Шолле. Что касается ресурсов PyTorch, мы рекомендуем официальное руководство, которое предлагает несколько более сложный и всесторонний подход к изучению внутренней работы нейронных сетей.
в заключении
- Keras: множество доступных руководств и повторно используемый код.
- PyTorch: отличная поддержка сообщества и активное развитие
Keras против PyTorch: отладка и самоанализ
Keras инкапсулирует большое количество вычислительных модулей, что затрудняет идентификацию кода, вызывающего проблему.
Для сравнения, PyTorch более многословен, и мы можем выполнять сценарии построчно. Подобно отладке NumPy, мы можем легко получить доступ ко всем объектам в коде и использовать оператор печати (или любой стандартный оператор отладки Python), чтобы увидеть проблемный код.
Стандартные сети, созданные пользователями Keras, имеют на порядок меньше шансов выйти из строя, чем стандартные сети, созданные пользователями PyTorch. Но когда что-то идет не так, ущерб огромен, и часто трудно найти строку кода, которая пошла не так. PyTorch обеспечивает более простую отладку, не беспокоясь о сложности модели. Кроме того, если вы подозреваете, что что-то не так, вы можете найти в репозитории PyTorch читаемый код.
в заключении
- PyTorch: лучшие возможности отладки
- Keras: необходимость отладки простых сетей (потенциально) возникает реже.
Keras vs PyTorch: экспорт моделей и кроссплатформенная переносимость
Какие у меня есть варианты экспорта и развертывания обученных моделей в производственной среде?
PyTorch сохраняет модель в Pickles, который основан на Python и не является переносимым, в то время как Keras использует формат файлов JSON + H5, что является более безопасным подходом (хотя сохранение пользовательских слоев в Keras часто сложнее). С другой стороны, в Keras тоже есть интерфейс R, если вы работаете с командой аналитиков данных, использующих R, то он вам понадобится.
Keras работает на TensorFlow, что означает, что у него больше возможностей для развертывания на мобильных платформах с TensorFlow для мобильных устройств и TensorFlow Lite. Создаваемые вами веб-приложения также можно развернуть на веб-страницах с помощью TensorFlow.js или Keras.js. Например, вы можете взглянуть на это дополнение для браузера, основанное на глубоком обучении, которое обнаруживает триггеры гиперфобии:GitHub.com/Beyond its Spicy8/Он….
Процесс экспорта модели PyTorch является более трудоемким из-за ограничений его кода Python, и в настоящее время широко распространенный подход заключается в том, чтобы сначала преобразовать модель PyTorch в форму Caffe2 с помощью ONNX.
в заключении
- Keras выигрывает: у него больше вариантов развертывания (непосредственно через бэкэнд TensorFlow) и более простой экспорт модели.
Keras против PyTorch: производительность
Дональд Кнут сказал, что преждевременная оптимизация — это корень всех (по крайней мере, большинства) зол в программировании.
В большинстве случаев разница в скорости в бенчмарках не должна быть основным критерием выбора фреймворка — особенно на этапе обучения. Очевидно, что время работы графического процессора намного дешевле, чем время работы специалиста по данным. Кроме того, во время обучения узкие места в производительности в основном связаны с неудачными реализациями, неоптимизированными сетями и загрузкой данных, а не со скоростью, с которой работает сам фреймворк. Конечно, для полного сравнения мы все же должны осветить этот аспект. Здесь мы рекомендуем два результата сравнения производительности:
- Сравнение TensorFlow, Keras и PyTorch от Wojtek Rosinski:W rosin ski.GitHub.IO/deep — ааа, позволь тебе…
- MicrosoftСравнение фреймворков глубокого обучения: подход Rosetta Stone:GitHub.com/IL karma N/D О…
PyTorch так же быстр, как TensorFlow, и, возможно, быстрее в рекуррентных нейронных сетях, Keras обычно медленнее по сравнению с ним. Как указал автор первой статьи: в большинстве случаев преимущества вычислительной эффективности высокопроизводительных фреймворков (например, PyTorch и TensorFlow) перевешиваются быстрой средой разработки и простотой экспериментов, предлагаемых Keras.
в заключении
- PyTorch превосходит Keras по скорости обучения
Keras против PyTorch: сводка сравнения
И Keras, и PyTorch — отличные варианты для начинающих фреймворков глубокого обучения. Если вы математик, исследователь или хотите понять природу моделей, обратите внимание на PyTorch. PyTorch действительно полезен, когда требуются более сложные настройки и отладка (например, обнаружение объектов с помощью YOLOv3 или LSTM с вниманием) или когда нам нужно оптимизировать выражения массива вместо нейронных сетей (например, матричная факторизация или алгоритмы word2vec).
Если вам нужна среда plug-and-play, Keras, безусловно, является более простым выбором: быстро создавайте, обучайте и оценивайте модели, не тратя слишком много времени на математическую реализацию.
Основные концептуальные знания о глубоком обучении можно передавать. Освоив основы среды, вы сможете применить полученные знания и освоить новые библиотеки глубокого обучения.
Мы рекомендуем вам попробовать простые модели глубокого обучения как в Keras, так и в PyTorch.
Оригинальная ссылка:глубокий смысл.любовь/может рас-или-друзья…