Вы подписаны на Машинное обучение доступно
Отлично! завершите оплату для полного доступа к Машинное обучение доступно
Снова приветствуем Вас! Вы успешно авторизовались
Успех! Аккаунт активирован, и Вы имеете полный доступ к контенту.
TensorFlow

TensorFlow

in

TensorFlow – это библиотека с открытым исходным кодом для численных вычислений и крупномасштабного Машинного обучения (ML), созданная командой Google Brain. TensorFlow объединяет множество моделей и алгоритмов машинного и Глубокого обучения (Deep Learning). Он использует Python и API для создания приложений, компилируясь на высокопроизводительном языке C++.

TensorFlow может обучать и запускать глубокие нейронные сети для Классификации (Classification) рукописных цифр, Распознавания изображений (Image Recognition), Рекуррентных нейронных сетей (RNN), Обработки естественного языка (NLP). TensorFlow поддерживает масштабирование модели: алгоритм, обученный на 10 Мегабайтах данных прекрасно справится и с Большими данными (Big Data).

Как работает TensorFlow

Фреймворк позволяет разработчикам создавать Графы (Graph) – абстрактную структуру данных, которая состоит из конечного набора вершин (также называемых узлами или точками) вместе с набором ребер. Вершины могут быть частью структуры графа или могут быть внешними объектами, представленными целочисленными индексами или ссылками:

Каждый узел в графе представляет собой математическую операцию, а каждое ребро – многомерный массив данных или Тензор (Tensor).

Все это TensorFlow предоставляет программисту на языке Python. С этим языком легко освоиться и работать., и он предоставляет удобные способы выражения взаимосвязи высокоуровневых абстракций. Узлы, тензоры и приложения в TensorFlow являются объектами Python.

Однако фактические математические операции в Python не выполняются. Библиотеки преобразований, доступные через TensorFlow – высокопроизводительные двоичные файлы C++. Python просто направляет трафик между компонентами и предоставляет абстракции программирования высокого уровня, чтобы связать их вместе.

Приложения TensorFlow можно запускать практически на любом девайсе: на локальном компьютере, кластере в облаке, устройствах iOS и Android, центральных или графических процессорах. Если вы используете собственное облако Google, то можете запустить TensorFlow на специализированном процессоре TensorFlow Processing Unit (TPU) для дальнейшего ускорения. Однако результирующие модели, созданные TensorFlow, можно развернуть практически на любом устройстве, где они будут использоваться.

TensorFlow 2.0, выпущенный в октябре 2019 года, во многом обновился на основе отзывов пользователей, чтобы упростить работу (например, с помощью относительно простого API Keras для обучения модели) и повысить производительность. Распределенное обучение (Distributed Learning) легче запускать благодаря новому API, а поддержка TensorFlow Lite позволяет развертывать модели на бо́льшем количестве платформ. Однако код, написанный для более ранних версий TensorFlow, должен быть переписан, чтобы максимально использовать преимущества новых функций TensorFlow 2.0.

Преимущества TensorFlow

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

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

Google не только способствовал быстрому развитию этого проекта, но и создал множество важных предложений для TensorFlow, которые упрощают его развертывание и использование: вышеупомянутый TPU для повышения производительности в облаке Google; онлайн-центр для обмена моделями, созданными с помощью фреймворка; версии фреймворка для браузеров и мобильных устройств и многое другое.

Однако порой модель, обученная в одной системе, будет немного отличаться от модели, обученной в другой, даже если им будут переданы одни и те же данные. Причины этому – влияние случайных чисел, или случайное поведение графического процессора.

TensorFlow против конкурентов

Детище Джефа Дина (Jeff Dean) и Джеффри Хинтона (Geoffrey Hinton) конкурирует с множеством других фреймворков машинного обучения. PyTorch, CNTK и MXNet – это три основных фреймворка, которые удовлетворяют многие из тех же потребностей. Ниже я отметил, где они выделяются и уступают TensorFlow:

  • PyTorch помимо того, что построен на Python, имеет много других общих черт с TensorFlow: компоненты с аппаратным ускорением под капотом, высокоинтерактивная модель разработки, которая позволяет проектировать на ходу, и многие уже включенные полезные компоненты. Это лучший выбор для быстрой разработки проектов, но TensorFlow лучше всего подходит для более крупных проектов и сложных рабочих процессов.
  • Microsoft Cognitive Toolkit (CNTK) использует структуру графа для описания потока данных, но больше всего фокусируется на создании нейронных сетей с глубоким обучением. CNTK быстрее выполняет многие задачи нейронной сети и имеет более широкий набор API (Python, C ++, C #, Java). Но CNTK в настоящее время не так легко изучить или развернуть, как TensorFlow.
  • Apache MXNet, принятый Amazon в качестве ведущей платформы глубокого обучения на AWS, может практически линейно масштабироваться между несколькими графическими процессорами и несколькими машинами. Он также поддерживает широкий спектр языковых API: Python, C++, Scala, R, JavaScript, Julia, Perl, Go – хотя его собственные API не так приятны в работе, как TensorFlow.

Фото: @whale

Автор оригинальной статьи: Serdar Yegulalp