Серия столбцов
Машинное обучение: обзор начала работы для новичков (1):nuggets.capable/post/684490…
[Перевод] Что такое поиск по дереву Монте-Карло:nuggets.capable/post/684490…
Об ограничениях глубокого обучения
nuggets.capable/post/684490…
Необходимые инструменты
В соответствии с потребностями конкретных сценариев (исследование/инжиниринг), а также размером команды, возможностями разработчиков и другими вопросами необходимо выбрать соответствующий язык, фреймворк и вспомогательные инструменты для разработки. Это не только снижает сложность разработки, но и повышает эффективность разработки.
Из-за быстрого развития фреймворков многие стандарты и фичи постоянно меняются, и мало кому удавалось одновременно использовать несколько фреймворков для разработки, поэтому, собрав много данных, автор вынес текущие фичи различных фреймворков. Краткий обзор и сравнение. Чтобы получить более подробное описание, нажмите на профиль приложения в конце статьи.
Выбор языкового инструмента
Отличия, плюсы и минусы:
1.python:
- Полностью с открытым исходным кодом и бесплатно
- Существует множество фреймворков на основе Python: TensorFlow (Google), PyTorch (Facebook), Caffe2 (Facebook/UC Barkely), PaddlePaddle (Badiu), Керас, CNTK (Майкрософт), Теано, MXNet (Амазонка)
- Платформа с открытым исходным кодом и бесплатна, содержит множество примеров, проста в развертывании, а сообщество более активно.
- Широкий спектр языковых приложений, быстрое начало работы
- Многие другие библиотеки типов, которые легко использовать вместе
2.MATLAB:
- Коммерческое ПО, более дорогое (постоянный набор инструментов MATLAB+NN: 22 500 иен)
- Пакет инструментов мощный и имеет множество функций
- Иногда необходимо глубоко понять функцию функции, и время обучения может быть больше.
- По сравнению с фреймворком Python относительно мало пользователей.
- Портативность слабее, чем у python
- Алгоритмы и симуляционные исследования имеют большие преимущества и просты в использовании.
3.Jupyter Notebook(IPython):
- Поддерживает несколько языков: Python, Julia, R, Scala.
- легко поделиться
- Интерактивное программирование для мгновенных результатов
Источник ссылки на изображение: официальный сайт Jupyter Notebook.
4.C++:
- высокая скорость вычислений
- Затраты на обслуживание и разработку относительно высоки и относятся к основному языку.
- Когда необходимо разрабатывать такие модули, как новые алгоритмы, необходимо знать язык
Кроме того, есть 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
Преимущество:
- Сообщество Tensorflow активно, и легко найти связанные модели и проблемы.Различные вспомогательные инструменты для общей структуры относительно зрелые.
- Tensorflow имеет зрелое решение для производственного развертывания, и его проще развернуть с мобильных терминалов на серверы, чем другие фреймворки.
- Tensorflow в основном обеспечивает разработку API для Python, а также для Java, Go, C++, Haskell, Rust.
- Сам Tensorflow также имеет высокоуровневые фреймворки, такие как Keras, которые можно эффективно разрабатывать, и преимущества развертывания, принесенные Tensorflow позже.
- Согласно резюме в cs231n, Tensorflow очень эффективен при работе с RNN и массовым параллельным глубоким обучением.
- Существует Tensorflow Serving, который может напрямую загружать модель для предоставления услуг интерфейса RPC.
- После завершения блок-схемы определения ее можно получить автоматически, что сэкономит много работы.
Недостаток:
- Начать работу с Tensorflow сложно, на самом деле это новый язык, и многие разработчики сообщают, что писать на нем очень хлопотно.
- Не подходит для быстрой проверки идеи
- Доля Tensorflow в структуре, используемой в настоящее время каждой статьей, все еще относительно низка.
- Есть много мест, которые относятся к операциям черного ящика, трудно понять принцип обработки, а отладка затруднена.
- Скорость расширения функций слишком быстрая, что приводит к тому, что реальная скорость обучения не идеальна.Бумага в arxiv показывает (приведены данные [2]), что производительность худшая среди всех фреймворков.
2.PyTorch
Команда разработчиков: Facebook и другие компании и университеты
Лицензия с открытым исходным кодом: BSD 2.0
Преимущество:
- По сравнению с Tensorflow проще начать работу, код в стиле Python, а не на языке, созданном вами.высокая эффективность разработки
- Промежуточный процесс более прозрачен, прост в отладке и изучении
- Для большинства людей (кроме экспертного уровня) написанный код работает быстрее, чем Tensorflow во время обучения из-за проблем со способностями.
- Больше подходит для использования и разработки небольшими командами
- Исходный код самого фреймворка относительно ясен и читабелен, что проще для понимания, чем Tensorflow.
Недостаток:
- В большинстве случаев возможности скорости не так хороши, как у TensorFlow, таких как классические нейронные сети, такие как AlexNet.Подробнее см.Ссылки[2]В статье о возможностях производительности каждого фреймворка в различных режимах.
- Все еще на стадии бета-тестирования, вероятность ошибок в базовом слое и фреймворке выше, чем у TensorFlow.
- Пользователей сообщества не так много, как пользователей TensorFlow, за исключением тех, кто мигрировал с оригинального Torch.
3. Caffe2
Команда разработчиков: Facebook
Лицензия с открытым исходным кодом: Apache 2.0
Введение: Facebook разрабатывает Caffe2 для продуктовых приложений, тогда как PyTorch обычно используется для исследований и реализации идей. В то же время идея Caffe2 ближе к TensorFlow, в отличие от PyTorch, он использует статические графики, а Torch использует динамические графики, поэтому он не такой гибкий, как Torch, и больше ориентирован на быстродействие.
Преимущество:
- скоростьбыстрый
- По сравнению с Caffe, который поддерживает только C++, он поддерживает C++ и API Python.
- Он хорошо справляется с развертыванием на мобильной стороне и может быть лучше, чем TensorFlow, но нет данных, подтверждающих это. Тем не менее, он сильнее, чем PyTorch, в промышленных приложениях и распределенном обучении и больше ориентирован на мобильную производительность.
- Можно преобразовать исходную модель Caffe в Caffe2.
- Оба принадлежат Facebook с PyTorch, и между ними устанавливается соглашение о связи,Общий сервер.
- Предварительно обученную модель Model Zoo можно просто вызвать.
Недостаток:
- Сообщество не такое зрелое, как TensorFlow
- Обучение не такое гибкое, как PyTorch
4. MXNet
Команда разработчиков: Чен Тяньци и другие, теперь инвестируются и поддерживаются Amazon.
Преимущество:
- Поддерживает несколько языков: Python, R, MATLAB, Julia, Go, Scala, Javascript.
- Сосредоточьтесь на основе глубокого обучения, хорошо оптимизированного и быстрого обучения. Поскольку MXNet всегда ориентировался на оптимизацию производительности, а не на расширение функций, как TensorFlow, он имеет преимущество в производительности.
- Поддержка облачных сервисов Amazon, и теперь сервис облачных вычислений Amazon AWS по умолчанию использует MXNet в качестве обучающей среды.
- Этапы выполнения MXNet более гибкие, чем TensorFlow.
Недостаток:
- низкая активность сообщества
- Довольно удобен для новичков, плохо документирован (но улучшается благодаря поддержке Amazon)
5. PaddlePaddle
Команда разработчиков: Байду
Лицензия с открытым исходным кодом: Apache 2.0
Преимущество:
- Простота в использовании, особенно для существующих моделей, просто измените параметры и данные
- Китайская документация очень дружелюбна
- Основной исходный код программы написан на C++, который относительно легко читается.
- Кажется, особенно хорошо подходит для проблем, связанных с НЛП (обработкой естественного языка).
Недостаток:
- Меньше документов
- Не подходит для разработки новых алгоритмов или функций, поскольку вторичная разработка должна быть написана на базовом C++.
6. Keras
Команда разработчиков: GitHub/Keras Team
Лицензия с открытым исходным кодом: MIT
Преимущество:
- Начинай скорее,Подходит для новичков, эффективность разработки простой модели
- Базовый фреймворк можно гибко выбирать: в настоящее время поддерживает TensorFlow, CNTK, Theano.
- В то же время он расширяем и прост в использовании, и вы можете самостоятельно добавлять необходимые алгоритмы и другие модули.
- Инкапсулированный слой как концепция, простая для понимания
Недостаток:
- Неплохая производительность, но не преимущество
- Предпосылкой гибкости является то, что вам нужно быть знакомым с TensorFlow или другим низкоуровневым языком, и вам нужно прочитать определенное количество исходного кода Keras, поэтомуГибкость связана с первоначальными затратами
- Поддерживает только питон
7. CNTK
Команда разработчиков: Майкрософт
Лицензия с открытым исходным кодом: часть C++ принимает лицензию на программное обеспечение Boost, а часть набора данных имеет другие соглашения.
Введение: с точки зрения GitHub Star и PR, активность этого проекта не низкая, но отечественная популярность и уровень использования намного меньше, чем у других фреймворков.
Преимущество:
- По показателям различных сравнений он находится в верхней средней позиции, часто уступая только MXNet.
Недостаток:
- Количество пользователей в Китае невелико, и актуальной информации мало.
- Неудобен для новичков, не прост в установке, рекомендуется использовать Docker для изолированной установки.
8. deeplearning4j
Команда разработчиков: Затмение
Лицензия с открытым исходным кодом: Apache 2.0
Преимущество:
- Используйте Java в качестве языка разработки и наслаждайтесь кроссплатформенными преимуществами виртуальной машины Java.
- Есть хорошие примеры, на которых можно поучиться
- Скорость по сравнению с другими фреймворками при использовании cuDnn
- Поддержка Скала
Недостаток:
- Сборка мусора (GC) памяти во время обучения приведет к падению производительности, и автор улучшает
- Меньше внутренних пользователей
- Документация относительно проста
Цитаты
- Каковы преимущества PyTorch, выпущенного Facebook 18 января 2017 года, по сравнению с TensorFlow и MXNet? https://www.zhihu.com/question/54914188
- S.Shi et al., Benchmarking State-of-the-Art Deep Learning Software Tools, https://arxiv.org/pdf/1608.07249v7.pdf
- Stanford University, cs231n :Convolutional Neural Networks for Visual Recognition, http://cs231n.stanford.edu/
- Дьюк и др.,Китайский перевод примечаний cs231n, https://column.direct call.com/afraid/21930884
- Лэй Фэн Сеть,сравнение кадров, https://woooooooooooooooooooooooooooooooooooooooooooooooooooooooшнироббу шел iPhone.com/news/201709/3T4PWC5UB Lt Ru kV Type.HTML
- Знай почти,Keras, Theano, pytorch, caffe2 что лучше, как попробовать научиться?, https://woowowoo.directcall.com/question/59274399
- Знай почти,Как оценить TensorFlow и другие системы глубокого обучения, https://microblogging.com/afraid/1001603907610737775666
- Знай почти,Как оценить Caffe2, https://woohoohoo.com/question/58698158/answer/158139047
- GitHub, chenrudan, Сравнение трех библиотек с открытым исходным кодом: TensorFlow, MXNet и PaddlePaddle., http://sink-but.GitHub.IO/blog/2017/02/25/compare.html
- CSDN, мкснет опыт, http://blog.CSDN.net/U013713010/article/details/71635814
- сердце машины,Глубина | После того, как Amazon выбрала MXNet, сердце машины пообщалось с ними, http://specialty.global.com/news/2016-11/9726439.HTML
- Знай почти,Насколько эффективен Deeplearning4j? Каково приблизительное время выполнения дела Mnist?, https://woowowoo.directcall.com/question/49509850
- Цзяньшу, Юсинь ДрФиш,Программист-левша, писатель-правша: Jupyter Notebook, который вы должны знать,https://www.jianshu.com/p/86117613b7a6