TensorFlow — это открытая программная библиотека, предназначенная для машинного обучения, которая разработана корпорацией Google для решения задач построения и тренировки нейронных сетей.
Введение
TensorFlow является довольно молодой программной платформой, предназначенной для осуществления глубокого машинного обучения, которую разработали в Google Brain. В течение длительного времени эта платформа разрабатывалась в закрытом режиме под именем DistBelief, однако после глобальной модификации в ноябре 2015-го года вышел в свет ее открытый источник. Чуть более чем за год TensorFlow выросла до версии 1.0, приобрела интеграцию с keras, стала существенно более быстрой и получила поддержку мобильных платформ. В последнее время эта программная платформа получила развитие еще и в направлении классических методик, и в определенных фрагментах интерфейса уже стала похожа на scikit-learn. Вплоть до нынешней версии интерфейс изменялся довольно активно и часто, но проектировщики пообещали заморозить изменения в API.
Общие сведения о библиотеке TensorFlow
TensorFlow является библиотекой для машинного обучения, а также группой технологий, позволяющей осуществить обучение искусственного интеллекта решению различных задач. Библиотека изначально была создана для языка программирования Python и наиболее часто применяется именно с этим языком. Но есть версии TensorFlow и для других языков, таких как, C#, C++, Go, Java, Swift и других. Они применяются более редко, и в основном, для того чтобы написать код под специфические платформы.
Сама библиотека выполнена на языке Python с применением быстрого и производительного языка C++ для решения математических задач. По этой причине эта библиотека способна эффективно работать со сложными вычислениями. Как было указано выше, библиотеку разработала корпорация Google как продолжение внутренней библиотеки компании. TensorFlow является бесплатной программой, и она имеет открытый исходный код, который доступен на GitHub, а также она имеет активную поддержку сообщества энтузиастов.
TensorFlow используют специалисты по машинному обучению. Это проектировщики, которые проектируют, выполняют настройку и обучение модели для решения интеллектуальных задач, таких как, классификация, распознавание и многое другое. Помимо этого, данную библиотеку могут применять ученые и дата-аналитики, которым машинное обучение требуется для решения практических задач, связанных с обработкой данных.
Сама библиотека имеет в своем составе большой инструментальный набор для различных направлений машинного обучения, но наиболее часто ее используют для работы с нейронными сетями. Это структуры, аналогичные по устройству сетям нейронов в человеческой нервной системе. Нейронные сети сформированы из программных компонентов, именуемых нейронами, и связей среди них, и такая структурная организация позволяет их обучать. TensorFlow может работать с обычными и глубокими нейронными сетями различных типов, а именно, это могут быть рекуррентные, сверточные и другие сети. Также она может использоваться для машинного и глубокого обучения.
В качестве примеров использования этих технологий можно привести распознавание естественного языка, изображений и рукописных текстов, разнообразные задачи классификации или кластеризации, обработка больших данных.
В TensorFlow модели отображены при помощи графов, то есть, математических абстракций, состоящих из вершин и путей между ними. В качестве аналога графа можно привести схему дорог между различными точками. В программировании это, как правило, требуется для решения «маршрутных» задач и при формировании нейронных сетей.
TensorFlow использует для своей работы тензоры, то есть, многомерные структуры данных в векторном, что означает направленном пространстве. Тензоры применяются в линейной алгебре и физике, где при помощи тензоров можно описать пути графа, а вершины являются математическими операциями. Вычислительные операции в TensorFlow представляются в виде потоков данных через граф. То есть, информация перемещается по графу, ее трансляция выполняется по путям от вершины к вершине.
Эту библиотеку можно использовать, имея мощности обычного центрального процессора (CPU) или же задействовав мощности графического процессора (GPU). Режим работы может переключаться в коде. Следует отметить, что есть также специализированный тензорный процессор TPU, который создали разработчики библиотеки. Его можно использовать, если подключиться к облачному сервису Google.
К числу преимуществ TensorFlow могут быть отнесены следующие особенности:
- Высокий уровень абстракции. Библиотека сформирована таким образом, что отсутствует необходимость думать о технической реализации абстрактных понятий.
- Возможность интерактивной разработки. TensorFlow предоставляет возможность работы с элементами модели по отдельности и формировать ее буквально «на ходу», но при этом отдельно проверяются все элементы. Это более удобно, чем выполнять описание графа как единую монолитную структуру. Такой метод может сделать разработку более интерактивной, то есть, структура может гибко настраиваться и изменяться.
- Гибкость. TensorFlow может использоваться для формирования нейронных сетей, для глубокого обучения и иных направлений машинного обучения. Гибкость относится не только к функциям, но и технической стороны вопроса, то есть, библиотека может работать и с центральным, и с графическим процессором, ее можно применять и с другими инструментами, предназначенными для машинного обучения. К примеру, TensorFlow используют вместе с API Keras.
- Кроссплатформенность. TensorFlow, как и сам Python, может работать в самых разных операционных системах, а также локально или в облаке. У нее имеются расширения для мобильных устройств и браузерных приложений.