Что такое TensorFlow? Библиотека машинного обучения объяснила

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

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

TensorFlow может обучать и запускать глубокие нейронные сети для классификации рукописных цифр, распознавания изображений, встраивания слов, рекуррентных нейронных сетей, моделей от последовательности к последовательности для машинного перевода, обработки естественного языка и моделирования на основе PDE (уравнения в частных производных). Лучше всего то, что TensorFlow поддерживает масштабное прогнозирование производства с теми же моделями, которые используются для обучения.

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

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

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

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

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

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

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

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

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

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

Одно предостережение: некоторые детали реализации TensorFlow затрудняют получение полностью детерминированных результатов обучения модели для некоторых учебных заданий. Иногда модель, обученная в одной системе, будет немного отличаться от модели, обученной в другой, даже если им будут переданы одни и те же данные. Причины этого скользкие - например, как и где засеваются случайные числа, или определенные недетерминированные поведения при использовании графических процессоров). Тем не менее, эти проблемы можно обойти, и команда TensorFlow рассматривает дополнительные элементы управления, чтобы повлиять на детерминизм в рабочем процессе.

Видео по теме: Машинное обучение и ИИ расшифрованы

Преодолевая шумиху вокруг машинного обучения и искусственного интеллекта, наша группа обсуждает определения и значение технологии.

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

TensorFlow конкурирует с множеством других фреймворков машинного обучения. PyTorch, CNTK и MXNet - три основных фреймворка, которые удовлетворяют многие из тех же потребностей. Ниже я отметил, где они выделяются и не имеют успеха в сравнении с TensorFlow.

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

  • CNTK , Microsoft Cognitive Toolkit, как и TensorFlow, использует структуру графа для описания потока данных, но больше всего фокусируется на создании нейронных сетей с глубоким обучением. CNTK быстрее справляется со многими задачами нейронной сети и имеет более широкий набор API (Python, C ++, C #, Java). Но CNTK в настоящее время не так легко изучить или развернуть, как TensorFlow.

  • Apache MXNet , принятый Amazon в качестве ведущей платформы глубокого обучения на AWS, может практически линейно масштабироваться между несколькими графическими процессорами и несколькими машинами. Он также поддерживает широкий спектр языковых API-интерфейсов - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - хотя его собственные API-интерфейсы не так приятны в работе, как TensorFlow.