Введение в машинное обучение (2): выбор инструментов и фреймворков

TensorFlow открытый источник Python C++
Введение в машинное обучение (2): выбор инструментов и фреймворков

Серия столбцов

Машинное обучение: обзор начала работы для новичков (1):nuggets.capable/post/684490…
[Перевод] Что такое поиск по дереву Монте-Карло:nuggets.capable/post/684490…
Об ограничениях глубокого обучения
nuggets.capable/post/684490…

Необходимые инструменты

В соответствии с потребностями конкретных сценариев (исследование/инжиниринг), а также размером команды, возможностями разработчиков и другими вопросами необходимо выбрать соответствующий язык, фреймворк и вспомогательные инструменты для разработки. Это не только снижает сложность разработки, но и повышает эффективность разработки.
Из-за быстрого развития фреймворков многие стандарты и фичи постоянно меняются, и мало кому удавалось одновременно использовать несколько фреймворков для разработки, поэтому, собрав много данных, автор вынес текущие фичи различных фреймворков. Краткий обзор и сравнение. Чтобы получить более подробное описание, нажмите на профиль приложения в конце статьи.

Выбор языкового инструмента

Отличия, плюсы и минусы:
1.python:

  1. Полностью с открытым исходным кодом и бесплатно
  2. Существует множество фреймворков на основе Python: TensorFlow (Google), PyTorch (Facebook), Caffe2 (Facebook/UC Barkely), PaddlePaddle (Badiu), Керас, CNTK (Майкрософт), Теано, MXNet (Амазонка)
  3. Платформа с открытым исходным кодом и бесплатна, содержит множество примеров, проста в развертывании, а сообщество более активно.
  4. Широкий спектр языковых приложений, быстрое начало работы
  5. Многие другие библиотеки типов, которые легко использовать вместе

2.MATLAB:

  1. Коммерческое ПО, более дорогое (постоянный набор инструментов MATLAB+NN: 22 500 иен)
  2. Пакет инструментов мощный и имеет множество функций
  3. Иногда необходимо глубоко понять функцию функции, и время обучения может быть больше.
  4. По сравнению с фреймворком Python относительно мало пользователей.
  5. Портативность слабее, чем у python
  6. Алгоритмы и симуляционные исследования имеют большие преимущества и просты в использовании.

3.Jupyter Notebook(IPython):

  1. Поддерживает несколько языков: Python, Julia, R, Scala.
  2. легко поделиться
  3. Интерактивное программирование для мгновенных результатов

Источник ссылки на изображение: официальный сайт Jupyter Notebook.

4.C++:

  1. высокая скорость вычислений
  2. Затраты на обслуживание и разработку относительно высоки и относятся к основному языку.
  3. Когда необходимо разрабатывать такие модули, как новые алгоритмы, необходимо знать язык

Кроме того, есть Julia для научных вычислений, Scala для обработки больших данных, скриптовый язык lua ​​и другие языки и инструменты для обработки и анализа данных.

Преимущества и недостатки фреймворка и сравнение

Источник ссылки на изображение: Zhihu / Stanford cs231n, курс обучения.

0.scikit-learn

Команда разработчиков:Участники сообщества GitHub с открытым исходным кодом

Введение: сторонняя библиотека на основе Python для интеллектуального анализа данных и анализа данных, простая в использовании, в основном основанная на статистическом машинном обучении (фреймворки, связанные с глубоким обучением, относятся к следующим фреймворкам). На основе NumPy, SciPy, matplotlib, бесплатный и с открытым исходным кодом.

Лицензия с открытым исходным кодом: BSD 2.0

1.Tensorflow

Команда разработчиков: Google

Введение: это система обучения искусственного интеллекта Google второго поколения, основанная на платформе Theano для большей оптимизации и улучшений.

Лицензия с открытым исходным кодом: Apache 2.0

Преимущество:

  1. Сообщество Tensorflow активно, и легко найти связанные модели и проблемы.Различные вспомогательные инструменты для общей структуры относительно зрелые.
  2. Tensorflow имеет зрелое решение для производственного развертывания, и его проще развернуть с мобильных терминалов на серверы, чем другие фреймворки.
  3. Tensorflow в основном обеспечивает разработку API для Python, а также для Java, Go, C++, Haskell, Rust.
  4. Сам Tensorflow также имеет высокоуровневые фреймворки, такие как Keras, которые можно эффективно разрабатывать, и преимущества развертывания, принесенные Tensorflow позже.
  5. Согласно резюме в cs231n, Tensorflow очень эффективен при работе с RNN и массовым параллельным глубоким обучением.
  6. Существует Tensorflow Serving, который может напрямую загружать модель для предоставления услуг интерфейса RPC.
  7. После завершения блок-схемы определения ее можно получить автоматически, что сэкономит много работы.

Недостаток:

  1. Начать работу с Tensorflow сложно, на самом деле это новый язык, и многие разработчики сообщают, что писать на нем очень хлопотно.
  2. Не подходит для быстрой проверки идеи
  3. Доля Tensorflow в структуре, используемой в настоящее время каждой статьей, все еще относительно низка.
  4. Есть много мест, которые относятся к операциям черного ящика, трудно понять принцип обработки, а отладка затруднена.
  5. Скорость расширения функций слишком быстрая, что приводит к тому, что реальная скорость обучения не идеальна.Бумага в arxiv показывает (приведены данные [2]), что производительность худшая среди всех фреймворков.

2.PyTorch

Команда разработчиков: Facebook и другие компании и университеты

Лицензия с открытым исходным кодом: BSD 2.0

Преимущество:

  1. По сравнению с Tensorflow проще начать работу, код в стиле Python, а не на языке, созданном вами.высокая эффективность разработки
  2. Промежуточный процесс более прозрачен, прост в отладке и изучении
  3. Для большинства людей (кроме экспертного уровня) написанный код работает быстрее, чем Tensorflow во время обучения из-за проблем со способностями.
  4. Больше подходит для использования и разработки небольшими командами
  5. Исходный код самого фреймворка относительно ясен и читабелен, что проще для понимания, чем Tensorflow.

Недостаток:

  1. В большинстве случаев возможности скорости не так хороши, как у TensorFlow, таких как классические нейронные сети, такие как AlexNet.Подробнее см.Ссылки[2]В статье о возможностях производительности каждого фреймворка в различных режимах.
  2. Все еще на стадии бета-тестирования, вероятность ошибок в базовом слое и фреймворке выше, чем у TensorFlow.
  3. Пользователей сообщества не так много, как пользователей TensorFlow, за исключением тех, кто мигрировал с оригинального Torch.

3. Caffe2

Команда разработчиков: Facebook

Лицензия с открытым исходным кодом: Apache 2.0

Введение: Facebook разрабатывает Caffe2 для продуктовых приложений, тогда как PyTorch обычно используется для исследований и реализации идей. В то же время идея Caffe2 ближе к TensorFlow, в отличие от PyTorch, он использует статические графики, а Torch использует динамические графики, поэтому он не такой гибкий, как Torch, и больше ориентирован на быстродействие.

Преимущество:

  1. скоростьбыстрый
  2. По сравнению с Caffe, который поддерживает только C++, он поддерживает C++ и API Python.
  3. Он хорошо справляется с развертыванием на мобильной стороне и может быть лучше, чем TensorFlow, но нет данных, подтверждающих это. Тем не менее, он сильнее, чем PyTorch, в промышленных приложениях и распределенном обучении и больше ориентирован на мобильную производительность.
  4. Можно преобразовать исходную модель Caffe в Caffe2.
  5. Оба принадлежат Facebook с PyTorch, и между ними устанавливается соглашение о связи,Общий сервер.
  6. Предварительно обученную модель Model Zoo можно просто вызвать.

Недостаток:

  1. Сообщество не такое зрелое, как TensorFlow
  2. Обучение не такое гибкое, как PyTorch

4. MXNet

Команда разработчиков: Чен Тяньци и другие, теперь инвестируются и поддерживаются Amazon.

Преимущество:

  1. Поддерживает несколько языков: Python, R, MATLAB, Julia, Go, Scala, Javascript.
  2. Сосредоточьтесь на основе глубокого обучения, хорошо оптимизированного и быстрого обучения. Поскольку MXNet всегда ориентировался на оптимизацию производительности, а не на расширение функций, как TensorFlow, он имеет преимущество в производительности.
  3. Поддержка облачных сервисов Amazon, и теперь сервис облачных вычислений Amazon AWS по умолчанию использует MXNet в качестве обучающей среды.
  4. Этапы выполнения MXNet более гибкие, чем TensorFlow.

Недостаток:

  1. низкая активность сообщества
  2. Довольно удобен для новичков, плохо документирован (но улучшается благодаря поддержке Amazon)

5. PaddlePaddle

Команда разработчиков: Байду

Лицензия с открытым исходным кодом: Apache 2.0

Преимущество:

  1. Простота в использовании, особенно для существующих моделей, просто измените параметры и данные
  2. Китайская документация очень дружелюбна
  3. Основной исходный код программы написан на C++, который относительно легко читается.
  4. Кажется, особенно хорошо подходит для проблем, связанных с НЛП (обработкой естественного языка).

Недостаток:

  1. Меньше документов
  2. Не подходит для разработки новых алгоритмов или функций, поскольку вторичная разработка должна быть написана на базовом C++.

6. Keras

Команда разработчиков: GitHub/Keras Team

Лицензия с открытым исходным кодом: MIT

Преимущество:

  1. Начинай скорее,Подходит для новичков, эффективность разработки простой модели
  2. Базовый фреймворк можно гибко выбирать: в настоящее время поддерживает TensorFlow, CNTK, Theano.
  3. В то же время он расширяем и прост в использовании, и вы можете самостоятельно добавлять необходимые алгоритмы и другие модули.
  4. Инкапсулированный слой как концепция, простая для понимания

Недостаток:

  1. Неплохая производительность, но не преимущество
  2. Предпосылкой гибкости является то, что вам нужно быть знакомым с TensorFlow или другим низкоуровневым языком, и вам нужно прочитать определенное количество исходного кода Keras, поэтомуГибкость связана с первоначальными затратами
  3. Поддерживает только питон

7. CNTK

Команда разработчиков: Майкрософт

Лицензия с открытым исходным кодом: часть C++ принимает лицензию на программное обеспечение Boost, а часть набора данных имеет другие соглашения.

Введение: с точки зрения GitHub Star и PR, активность этого проекта не низкая, но отечественная популярность и уровень использования намного меньше, чем у других фреймворков.

Преимущество:

  1. По показателям различных сравнений он находится в верхней средней позиции, часто уступая только MXNet.

Недостаток:

  1. Количество пользователей в Китае невелико, и актуальной информации мало.
  2. Неудобен для новичков, не прост в установке, рекомендуется использовать Docker для изолированной установки.

8. deeplearning4j

Команда разработчиков: Затмение

Лицензия с открытым исходным кодом: Apache 2.0

Преимущество:

  1. Используйте Java в качестве языка разработки и наслаждайтесь кроссплатформенными преимуществами виртуальной машины Java.
  2. Есть хорошие примеры, на которых можно поучиться
  3. Скорость по сравнению с другими фреймворками при использовании cuDnn
  4. Поддержка Скала

Недостаток:

  1. Сборка мусора (GC) памяти во время обучения приведет к падению производительности, и автор улучшает
  2. Меньше внутренних пользователей
  3. Документация относительно проста

Цитаты

  1. Каковы преимущества PyTorch, выпущенного Facebook 18 января 2017 года, по сравнению с TensorFlow и MXNet? https://www.zhihu.com/question/54914188
  2. S.Shi et al., Benchmarking State-of-the-Art Deep Learning Software Tools, https://arxiv.org/pdf/1608.07249v7.pdf
  3. Stanford University, cs231n :Convolutional Neural Networks for Visual Recognition, http://cs231n.stanford.edu/
  4. Дьюк и др.,Китайский перевод примечаний cs231n, https://column.direct call.com/afraid/21930884
  5. Лэй Фэн Сеть,сравнение кадров, https://woooooooooooooooooooooooooooooooooooooooooooooooooooooooшнироббу шел iPhone.com/news/201709/3T4PWC5UB Lt Ru kV Type.HTML
  6. Знай почти,Keras, Theano, pytorch, caffe2 что лучше, как попробовать научиться?, https://woowowoo.directcall.com/question/59274399
  7. Знай почти,Как оценить TensorFlow и другие системы глубокого обучения, https://microblogging.com/afraid/1001603907610737775666
  8. Знай почти,Как оценить Caffe2, https://woohoohoo.com/question/58698158/answer/158139047
  9. GitHub, chenrudan, Сравнение трех библиотек с открытым исходным кодом: TensorFlow, MXNet и PaddlePaddle., http://sink-but.GitHub.IO/blog/2017/02/25/compare.html
  10. CSDN, мкснет опыт, http://blog.CSDN.net/U013713010/article/details/71635814
  11. сердце машины,Глубина | После того, как Amazon выбрала MXNet, сердце машины пообщалось с ними, http://specialty.global.com/news/2016-11/9726439.HTML
  12. Знай почти,Насколько эффективен Deeplearning4j? Каково приблизительное время выполнения дела Mnist?, https://woowowoo.directcall.com/question/49509850
  13. Цзяньшу, Юсинь ДрФиш,Программист-левша, писатель-правша: Jupyter Notebook, который вы должны знать,https://www.jianshu.com/p/86117613b7a6