Существует множество библиотек, которые используются для запуска алгоритмов глубокого обучения, проведения исследований и решения проблем. Сегодня существующие библиотеки постоянно обновляются, а также доступны новые библиотеки. Однако среди этих библиотек нет полностью доминирующей. Пользователи работают в разных библиотеках в зависимости от своего опыта. Вот некоторые из библиотек, используемых для проведения исследований глубокого обучения.

TensorFlow: это сквозная платформа с открытым исходным кодом, разработанная Google для машинного обучения. Он имеет экосистему комплексных, гибких инструментов и библиотек, а также бренды сообщества для приложений машинного обучения. Поскольку существует много уровней абстракции, это дает возможность выбрать подходящий для решаемой задачи. Keras API широко используется во многих задачах глубокого обучения. Возможна итерация во время приложения и интуитивно понятная отладка. Для крупномасштабных задач обучения машинному обучению доступен API стратегии распределения для распределенного обучения на различных конфигурациях оборудования без изменения определения модели.

С помощью TensorFlow можно создавать, обучать и распространять модели на серверах, устройствах и в Интернете. Он имеет структуры, которые можно запускать в различных средах, таких как Extended, Lite и TensorFlow.js. Крупные компании, такие как Google, Intel, Twitter, CocaCola, airbnb, DeepMind, GE Healtcare, NeRSC, внедряют приложения машинного обучения с помощью TensorFlow. Кроме того, многие исследователи по всему миру продолжают свои исследования, используя эти библиотеки с открытым исходным кодом. Его выдающиеся особенности:

  • Возможность параллельной работы как с GPU, так и с CPU,
  • Визуализация с TensorBoard,
  • Обеспечение параллелизма модели и данных,
  • Быстрая компиляция.

Theano: это библиотека Python, которая может эффективно определять математические выражения, содержащие многомерные массивы, позволяя им оценивать и оптимизировать их. Очень общую библиотеку, написанную на Python, можно использовать непосредственно для глубокого обучения, а также с перезаписанными библиотеками, такими как keras или lasagne. Он разрабатывается с 2007 года и используется при решении многих задач машинного обучения. В 2017 году Йошуа Бенжио объявил, что библиотека Theano больше не будет развиваться. Его выдающиеся особенности:

  • Тесная интеграция с NumPy,
  • Может использоваться с графическим процессором,
  • Эффективность в символическом выводе,
  • Оптимизация скорости и стабильности,
  • Генерация динамического кода C,
  • Комплексное модульное тестирование и самопроверка.

Caffe: это среда глубокого обучения, которая учитывает выразительность, скорость и модульность. Разработано Berkeley AI Research (BAIR) и участниками сообщества. Проект Caffe был инициирован во время получения докторской степени Янцин Цзя в Калифорнийском университете в Беркли.

Его архитектура поощряет его приложения и использование в задачах глубокого обучения. Модели и оптимизации могут быть определены в конфигурации без необходимости кодирования. Установив один тег для обучения на компьютере с графическим процессором, его можно переключать между процессором и графическим процессором и развертывать для использования на компьютерах и мобильных устройствах. Благодаря его расширяемой структуре и функциональным возможностям многие исследователи вносили новшества и дополнения. Он имеет функцию быстрой работы. Его выдающиеся особенности:

  • поддержка графического процессора,
  • Обучение модели без написания кода,
  • Удобный интерфейс Python,
  • Скорость обработки изображения,
  • Предварительно обученные модели.

Caffe2: это легкая, модульная и масштабируемая платформа глубокого обучения. Caffe2, созданный на основе caffe, был разработан с учетом выразительности, скорости и модульности. Caffe2, совместно разработанный Nvidia и Facebook, призван предоставить простой и понятный способ использования глубокого обучения за счет использования вклада сообщества в новые модели и алгоритмы. Caffe2 поставляется с API-интерфейсами Python и C++, которые работают взаимозаменяемо. Таким образом, прототипы могут быть быстро созданы, а затем оптимизированы.

Caffe2 настроен на использование всех преимуществ новейших библиотек NVIDIA Deep Learning SDK, cuDNN, cuBLAS и NCCL для обеспечения высокопроизводительного ускорения с несколькими графическими процессорами для настольных компьютеров, серверов и встроенных устройств. Его можно использовать в облачных сервисах или образах Docker, а также устанавливать на компьютеры Mac, Windows или Ubuntu. Caffe2 также интегрирован с Android Studio, Microsoft Visual Studio или XCode для разработки мобильных приложений. Его выдающиеся особенности:

  • Распределенное обучение CNN может быть представлено одним графом вычислений, будь то обучение на одном или нескольких графических процессорах или нескольких машинах. Это очень важно для приложений глубокого обучения масштаба Facebook.
  • Простые гетерогенные вычисления на выделенном оборудовании (например, в iOS граф вычислений Caffe2 может брать изображение из ЦП, преобразовывать его в буферные объекты Metal GPU и полностью выполнять вычисления на графическом процессоре для максимальной эффективности).
  • Улучшенное управление ресурсами среды выполнения, например оптимизация статической памяти с помощью Memonger или готовых обученных сетей для достижения наилучшей производительности.

Keras: это библиотека глубокого обучения, использующая язык Python, подготовленный для приложений глубокого обучения. Keras — это высокоуровневый API нейронных сетей, который может работать на TensorFlow, CNTK или Theano. Это позволяет ему работать на GPU или CPU через эти библиотеки. Поскольку это библиотека более высокого уровня, с ней проще разрабатывать приложения, чем с Theano или Tensorflow. Его выдающиеся особенности:

  • Обеспечение простого и быстрого прототипирования (за счет удобного для пользователя, модульности и расширяемости),
  • Поддерживает CNN и RNN и их комбинации,
  • Возможность работы на CPU и GPU.

Keras — это API, который отдает предпочтение пользовательскому опыту, имеет удобный интерфейс и предназначен для людей, а не для машин. Предоставляет обратную связь для отладки. Он предлагает API-интерфейсы, которые совместимы и просты в использовании друг с другом. Добавлять новые модули легко, а набор решений, которые можно реализовать на существующих примерах, широк. Эти функции делают его пригодным для исследований и могут быть расширены.

Уровни нейронной сети, функции стоимости, оптимизаторы, схемы инициации, функции активации и схемы регуляризации позволяют создавать модульные конструкции, которые можно комбинировать для создания новых моделей. Отдельного файла конфигурации модели в виде объявления нет. Модели описываются в коде Python, который компактен, прост в отладке и расширяем.

PyTorch: это тензорная библиотека, оптимизированная для глубокого обучения с использованием графических и центральных процессоров. Это пакет Python, который предоставляет две функции высокого уровня. Его выдающиеся особенности:

  • Тензорные вычисления (например, NumPy) с мощным ускорением графического процессора,
  • Глубокие нейронные сети на основе системы автоградации на основе полос.

PyTorch — это не Python, который привязывается к монолитному фреймворку C++. Он создан для глубокой интеграции в Python. Новые слои нейронной сети могут быть написаны на Python с использованием различных библиотек, а также могут использоваться такие пакеты, как Cython и Numba. Он предлагает широкий спектр тензорных процедур для ускорения и удовлетворения требований научных вычислений, таких как нарезка, индексирование, математические операции, линейная алгебра, редукция.

MXNet: Apache MXNet — это гибкая и эффективная библиотека глубокого обучения. Библиотеки ускорения, такие как MXNet, предлагают инструменты, помогающие разработчикам использовать все возможности графических процессоров и облачных вычислений. Хотя эти инструменты обычно полезны и применимы для любых математических вычислений, MXNet уделяет особое внимание ускорению разработки и распространения крупномасштабных глубоких нейронных сетей. Его выдающиеся особенности:

  • Обеспечивает обучение работе с несколькими графическими процессорами, упрощая масштабирование вычислений в зависимости от количества доступных графических процессоров.
  • Автоматизируйте вычисления производных, которые когда-то мешали исследованиям нейронных сетей,
  • Благодаря оптимизированным предопределенным слоям вы можете кодировать пользовательские слои, смешивая их, а предопределенные слои обеспечивают скорость и производительность.
  • Соответствующий макет устройства для каждой структуры данных.

MXNet обеспечивает оптимизированные численные вычисления для графических процессоров и распределенных экосистем, не выходя из высокопроизводительных сред, таких как Python и R. MXNet автоматизирует общие рабочие процессы, так что стандартные нейронные сети можно полностью выразить всего несколькими строками кода. MXNet поддерживает два стиля программирования: обязательное программирование (поддерживается NDArray API) и символьное программирование (поддерживается Symbol API). Помимо набора инструментов общего назначения для оптимизации математических операций, MXNet предоставляет предопределенные слои нейронной сети.

CNTK: Microsoft Cognitive Toolkit (CNTK) — это набор инструментов с открытым исходным кодом для глубокого обучения, распространяемый в коммерческих классах. Он определяет искусственные нейронные сети как серию вычислительных шагов через ориентированный граф. CNTK позволяет пользователю легко реализовывать и комбинировать популярные типы моделей, такие как DNN с прямой связью, CNN и рекуррентные нейронные сети (RNN/LSTM). CNTK реализует обучение распространению ошибок SGD с автоматической дифференциацией и распараллеливанием между несколькими графическими процессорами и серверами. Python можно включать в программы на C# или C++ в виде библиотеки или использовать как самостоятельный инструмент машинного обучения через собственный язык описания модели пользователя (BrainScript). Кроме того, в программах на Java можно использовать функциональные возможности оценки модели CNTK.

CNTK также является одним из первых инструментов глубокого обучения, поддерживающих формат Open Neural Network Exchange ONNX, представление общей модели с открытым исходным кодом для взаимодействия фреймворков и общей оптимизации. ONNX, совместно разработанный Microsoft и поддерживаемый другими, позволяет разработчикам перемещать модели между такими платформами, как CNTK, Caffe2, MXNet и PyTorch.

KNet: это среда глубокого обучения, реализованная Дениз Юрет и ее партнерами на сайте Julia. Поддерживает работу графического процессора и автоматическое дифференцирование с использованием динамической вычислительной графики для моделей, определенных в Julia. Knet использует динамические вычислительные диаграммы, созданные во время выполнения, для автоматического расчета градиента. Это позволяет реализовывать модели машинного обучения, определяя только прямые вычисления, используя всю мощь и объяснение языка высокого уровня, такого как Julia.

ЦИФРЫ: это интерактивная система обучения GPU с глубоким обучением. Nvidia DIGITS (Deep Learning GPU Training System-DIGITS) можно использовать для быстрого обучения высокочувствительной глубокой нейронной сети задачам классификации, сегментации и обнаружения объектов. Это упрощает общие задачи глубокого обучения, такие как управление данными, проектирование и обучение нейронных сетей в системах с несколькими графическими процессорами, мониторинг производительности в реальном времени с помощью расширенных визуализаций и выбор наиболее эффективной модели из браузера результатов для развертывания. Он полностью интерактивен, поэтому специалисты по данным могут сосредоточиться на проектировании и обучении сетей, а не на программировании и отладке. Его выдающиеся особенности:

  • Проектировать, обучать и визуализировать глубокие нейронные сети для классификации изображений, сегментации и обнаружения объектов с использованием Caffe, Torch и TensorFlow,
  • Загрузка предварительно обученных моделей, таких как AlexNet, GoogLeNet, LeNet и UNET, из магазина моделей DIGITS,
  • Выполнение сканирования гиперпараметров скорости обучения и размера пакета для повышения точности модели,
  • Планирование, мониторинг, управление работами по обучению нейронной сети и анализ точности и потерь в режиме реального времени,
  • Импорт различных форматов изображений и источников с помощью плагина DIGITS,
  • Автоматически масштабируйте учебные задания на несколько графических процессоров.

ВЕЛЕС: Быстро Глубокое обучение — это распределенная платформа для разработки приложений. Написано на Python, с использованием OpenCL или CUDA под Apache 2.0, используется потоковое программирование. Двигатель VELES фокусируется на производительности и гибкости. Можно использовать многие известные алгоритмы, такие как полносвязные сети, CNN, рекуррентные сети. Все серверные части имеют одинаковый интерфейс и обеспечивают одинаковые результаты вычислений или точность с одинарной или двойной точностью. Его выдающиеся особенности:

  • Размещение ВЕЛЕС на ноутбуке или кластере одной командой,
  • Моделирование из более чем 250 оптимизированных единиц,
  • Анализируйте и представляйте набор данных на ходу с помощью загрузчиков,
  • Работа на ПК или высокопроизводительном кластере,
  • Практический мониторинг тренировочного процесса,
  • Автоматически извлекать обученную модель как приложение,
  • Работает в облаке.

Помимо них, Chainer, PaddlePaddle, Covnetjs, Deeplearning4j, PyLearn2, Deep Learn Toolbox-Matlab, Sci-Kit Learn, Accord.NET, Apache Spark, AccordMachineLearning и т. д. Существуют библиотеки и инструменты машинного обучения, такие как. Он был предложен пользователям в различных областях использования.

ССЫЛКА

Саваш, С. (2019), Karotis Arter Intima Media Kalınlığının Derin Öğrenme ile Sınıflandırılması, Gazi Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Ana Bilim Dalı, Doktora Tezi, Анкара.