TensorFlow

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

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

TensorFlow 1 и TensorFlow 2

На данный момент современной версией является TensorFlow 2. Но некоторые Data Scientist’ы до сих пор используют 1-ю версию. На это есть причины:

  • Различный API. У 1-й и 2-й версиях есть небольшие различия, которые придётся изучать
  • Множество багов и скорость выполнения. Случалось так, что старые версии показывали более высокие результаты скорости работы. Но версия 2.3 наконец обогнала своих предшественников [1]

Основным различием между версиями является переход с отложенных вычислений (lazy) на мгновенные (Eager). Кроме того 2-й версия объединена с другим фреймворков глубокого обучения — Keras.

Суть отложенных вычисления заключается в том, что все тензорные операции происходят только в момент компиляции. Это немного отличается от стиля программирования на Python, поскольку результат можно посмотреть сразу же, поэтому TensorFlow 2, вслед за своим конкурентом Pytorch, перешел на  режим мгновенных вычислений (Eager mode). Хотя разработчики всё же оставили возможность перехода на отложенные вычисления.

Слияние TensorFlow 2 и Keras

Большой вклад внёс фреймворк глубокого обучения Keras. До некоторого времени TensorFlow был библиотекой тензорных вычислений, в то время как Keras служит для создания архитектур нейронных сетей (Neural Net). Начиная со 2-й версией, Keras стал частью TensorFlow, что дало ему огромное преимущество, так как не нужно настраивать их по отдельности.

Keras предоставляет всё необходимое для моделирования высокоуровневых архитектур глубоких нейронных сетей. В таблице перечислены основные модули Keras, а также количество инструментов в них.

 

Модуль

Количество классов

Слои (layers)

105

Функции активации (activations)

15

Функции потерь (losses)

25

Метрики качества (metrics)

43

Оптимизаторы (optimizers)

9

Обратные вызовы (callbacks),

14

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

TensorFlow позволяет Data Scientist’ам создавать графы потоков данных. Эти графы — это структуры, которые описывают, как данные перемещаются через серию рёбер и узлов. Каждый узел в графе представляет собой математическую операцию, а каждое ребро между узлами представляет собой многомерный массив данных – тензор.

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

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

Процессы построения и обучения моделей глубокого обучения очень просты и удобны. Для простых архитектур используется Sequential — последовательная модель, где все слои идут друг за другом. Вот так выглядит пример построения, компиляции и обучения сверточной нейронной сети (CNN) в TensorFlow:

model = tf.keras.models.Sequential([
    layers.Conv2D(32, (3,3), activation='relu',
                        input_shape=(28,28,1)),
    layers.MaxPooling2D((2,2)),
    layers.Conv2D(64, (3,3), activation='relu'),
    layers.Flatten(input_shape=(shape_0, shape_1)),
    layers.Dense(256, activation='relu'),
    layers.Dropout(0.2),
    layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)

Визуализация с TensorBoard

Мало обучить модель, нужно ещё узнать её эффективность: не переобучилась ли она, на какой эпохе обучения всё пошло не так, какая точность, какой процент потерь, как выглядит графовая структура и т.д. Эти вопросы может решить специальный инструмент визуализации данных — TensorBoard.

Как выглядит TensorBorad TensorFlow
Интерфейс TensorBoard

Вызвать TensorBoard можно прямо у себя ipynb-блокноте, Google Colab или в браузере. TensorBoard поставляется вместе с фреймворком.

Где используется TensorFlow

TensorFlow применяется чуть ли не в каждой крупной компании (Google, Airbnb, Inter и т.д.). Вот практические примеры использования в TensorFlow в бизнесе:

  • Airbnb, где фреймворк используется для классификации и детектирования изображений [2]
  • В Coca-Cola он требуется для распознавания образов, например, распознавания кодов на внутренней стороне крышки от бутылки [3]
  • Google использует свой фреймворк во всех своих продуктах (Gmail, Search, Translate и т. д.) [4]
  • PayPal применяется для детектирования мошеннических операций [5]
  • В Twitter он необходим для составления рейтинга твитов [6]

Читайте также статьи об использовании TensorFlow:

Источники

  1. Ответы в StackOverflow о том, какая версия быстрее
  2. Использование в Airbnb
  3. Использование в Coca-Cola
  4. Использование в Google
  5. Использование в платежной системе PayPal
  6. Как используется фреймворк в Twitter