TensorFlow – это открытое программное обеспечение для машинного обучения, предназначенное для тренировки нейронных сетей. Нейронные сети TensorFlow выражаются в виде графов потока данных. Каждый узел в графе представляет операции, выполняемые нейронными сетями на многомерных массивах. Эти многомерные массивы широко известны как тензоры, отсюда и название TensorFlow.
Читайте также: Введение в машинное обучение
TensorFlow – это система для глубокого обучения. TensorFlow отлично подходит для поиска информации, как демонстрирует RankBrain, система искусственного интеллекта для поискового ранжирования Google. TensorFlow (согласно Inception) может распознавать изображения и записи естественного языка. Эта система также полезна при решении других проблем, не связанных с машинным обучением (например, в решении дифференциальных уравнений).
Архитектура TensorFlow позволяет развертывать несколько CPU или GPU на рабочем столе, сервере или мобильном устройстве. Существуют также расширения для интеграции с CUDA, платформой параллельных вычислений от Nvidia. Это дает пользователям GPU доступ к набору виртуальных команд и другим элементам графического процессора, которые необходимы для решения задач параллельных вычислений.
Данный мануал поможет установить версию TensorFlow с поддержкой только для CPU. Такая установка идеально подходит для пользователей, которые хотят работать с TensorFlow, но не имеют графической карты Nvidia или просто не нуждаются в подобных приложениях.
Вы можете установить TensorFlow несколькими способами. Каждый метод используется в разных обстоятельствах и средах разработки:
- Python и Virtualenv: этот метод позволяет установить TensorFlow и все связанные пакеты в виртуальную среду Python. Это позволяет изолировать среду TensorFlow от других программ Python, установленных на этой машине.
- pip: глобальная установка TensorFlow. Этот метод рекомендуется пользователям, которые хотят получить общедоступную установку TensorFlow в многопользовательской системе. Однако этот метод установки не изолирует TensorFlow и может мешать другим установкам или библиотекам Python.
- Docker: это среда контейнеризации, которая позволяет полностью изолировать содержимое контейнера от остальных пакетов системы. TensorFlow и все зависимости устанавливаются в контейнер. Этот метод позволяет внедрить TensorFlow в архитектуру большого приложения, которое уже использует Docker. Однако образ Docker будет довольно большим.
Данный мануал поможет установить TensorFlow в виртуальную среду Python с помощью virtualenv. Это изолирует TensorFlow и позволит быстро запустить все необходимое. Для тестирования установки в конце мануала показано, как запустить распознавание изображений TensorFlow.
Требования
- Сервер Ubuntu 18.04, настроенный по этому мануалу.
- Для выполнения примеров вам понадобится 1Гб RAM минимум.
- Python 3.3+ и virtualenv (все это можно установить с помощью руководства Установка Python 3 и настройка среды разработки на сервере Ubuntu 18.04).
- Git для загрузки репозитория примеров (читайте мануал Установка Git в Ubuntu 18.04).
1: Установка TensorFlow
Сейчас нужно создать виртуальную среду и установить в ней TensorFlow .
Для начала нужно создать каталог проекта. Здесь мы условно назовем его tf-demo:
mkdir ~/tf-demo
Перейдите в новый каталог:
cd ~/tf-demo
Создайте новую виртуальную среду tensorflow-dev. Для этого введите следующую команду:
python3 -m venv tensorflow-dev
Это создаст новый каталог tensorflow-dev, в котором будут храниться все пакеты, установленные в эту среду. Также здесь вы найдете pip и индивидуальную версию Python.
Включите виртуальную среду:
source tensorflow-dev/bin/activate
После активации вы увидите в терминале:
(tensorflow-dev)username@hostname:~/tf-demo $
Теперь вы можете установить TensorFlow в свою среду.
Запустите следующую команду, чтобы установить TensorFlow и обновиться до последней версии, доступной в PyPi:
pip install --upgrade tensorflow
TensorFlow установится. Вы должны получить вывод, который указывает, что установка пакета вместе со всеми зависимостями прошла успешно.
...
Successfully installed absl-py-0.7.1 astor-0.7.1 gast-0.2.2 grpcio-1.19.0 h5py-2.9.0 keras-applications-1.0.7 keras-preprocessing-1.0.9 markdown-3.0.1 mock-2.0.0 numpy-1.16.2 pbr-5.1.3 protobuf-3.7.0 setuptools-40.8.0 tensorboard-1.13.1 tensorflow-1.13.1 tensorflow-estimator-1.13.0 termcolor-1.1.0 werkzeug-0.15.0 wheel-0.33.1
...
Successfully installed bleach-1.5.0 enum34-1.1.6 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 setuptools-38.2.3 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0
Примечание: Чтобы отключить виртуальную среду, введите:
deactivate
Чтобы снова включить виртуальную среду, перейдите в каталог проекта и введите:
source tensorflow-dev/bin/activate
2: Проверка установки TensorFlow
Чтобы проверить установку TensorFlow, попробуйте запустить в TensorFlow простую программу в качестве пользователя без прав root. В качестве примера можно использовать простую программу «Hello, world». Вместо того чтобы создавать файл Python, создайте эту программу с помощью интерактивной консоли Python.
Читайте также: Использование интерактивной консоли Python
Запустите интерпретатор Python:
python
В терминале появится:
>>>
Это командная строка интерпретатора Python, она указывает на то, что вы можете начать вводить команды Python.
Сначала введите эту строку, чтобы импортировать пакет TensorFlow и сделать его доступным в качестве локальной переменной tf. Нажмите Enter, введя строку:
import tensorflow as tf
Затем добавьте эту строку, чтобы отобразить сообщение «Hello, world!».
hello = tf.constant("Hello, world!")
Откройте новую сессию TensorFlow и присвойте ее переменной sess:
sess = tf.Session()
Примечание: В зависимости от среды вы можете увидеть такой вывод:
2019-03-20 16:22:45.956946: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2019-03-20 16:22:45.957158: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2019-03-20 16:22:45.957282: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2019-03-20 16:22:45.957404: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2019-03-20 16:22:45.957527: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
Это говорит о том, что у вас есть набор команд, который можно оптимизировать для повышения производительности TensorFlow. Если вы видите это предупреждение, вы можете спокойно проигнорировать его и продолжить работу.
Чтобы отобразить результат запуска сессии TensorFlow, которую вы создали в предыдущих строках кода, введите следующую строку.
В Python 3 sess.run() возвращает байтовую строку, которая будет отображаться как b’Hello, world! ‘ если вы запустите просто print(sess.run(hello)). Чтобы вернуть «Hello, world!» в виде строки, добавьте метод decode().
print(sess.run(hello).decode())
В консоли появится:
Hello, world!
Это значит, что все работает правильно. Теперь можно попробовать выполнить какую-нибудь более сложную задачу с помощью TensorFlow.
Закройте консоль Python (нажмите CTRL+D или введите quit()).
3: Распознавание изображений с помощью TensorFlow
Теперь проверьте функции распознавания изображений TensorFlow.
Чтобы классифицировать изображение, вам нужно подготовить модель. Затем вам нужно написать код для использования этой модели.
Читайте также: Введение в машинное обучение
TensorFlow предлагает репозиторий моделей и примеров, где можно найти код и тренированные модели для распознавания изображений.
С помощью Git клонируйте репозиторий models с GitHub в каталог проекта:
git clone https://github.com/tensorflow/models.git
После того как Git проверит репозиторий, вы увидите такой вывод:
Cloning into 'models'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 24851 (delta 17), reused 12 (delta 6), pack-reused 24819
Receiving objects: 100% (24851/24851), 507.78 MiB | 32.73 MiB/s, done.
Resolving deltas: 100% (14629/14629), done.
Checking out files: 100% (2858/2858), done.
Перейдите в каталог models/tutorials/image/imagenet:
cd models/tutorials/image/imagenet
Этот каталог содержит файл classify_image.py, который использует TensorFlow для распознавания изображений. Эта программа загружает подготовленную модель с tensorflow.org при ее первом запуске. Для загрузки этой модели требуется 200 МБ свободного места на диске.
В этом примере попробуйте классифицировать предварительно загруженное изображение панды. Выполните эту команду для запуска программы классификатора изображений:
python classify_image.py
Вы увидите такой вывод:
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
custard apple (score = 0.00147)
earthstar (score = 0.00117)
Так TensorFlow классифицирует изображения.
Если вы хотите использовать другое изображение, добавьте аргумент –image_file в команду python3 classify_image.py. В аргументе нужно указать абсолютный путь к файлу изображения.
Заключение
Вы успешно установили TensorFlow в виртуальную среду Python и научились использовать некоторые базовые функции этой программы. Теперь у вас есть инструменты, которые позволяют вам изучать новые темы (например, сверточные нейронные сети).
Руководство программиста – отличный ресурс для изучения функций TensorFlow. Вы также можете изучить Kaggle, среду для практического применения концепций машинного обучения. У этого проекта отличная вики, где вы можете найти нужную информацию и поделиться своими решениями.