
Этот материал посвящён основам TensorFlow и рассчитан на читателей, которые ничего не знают о данной библиотеке.
TensorFlow: современная библиотека машинного обучения
Проект TensorFlow был переведён Google в разряд опенсорсных в 2015 году. Его предшественником был проект DistBelief, годы опыта, накопленные в ходе работы с которым, отразились на TensorFlow.
Разработчики библиотеки TensorFlow стремились к тому, чтобы она была бы гибкой, эффективной, расширяемой, переносимой. В результате ей можно пользоваться в самых разных вычислительных средах — от тех, которые формируются мобильными устройствами, до сред, представленных огромными кластерами. Библиотека позволяет быстро готовить к реальной работе обученные модели, что устраняет необходимость в создании особых реализаций моделей для продакшн-целей.
Библиотека TensorFlow, с одной стороны, привлекает к себе внимание опенсорс-сообщества и открыта для инноваций, а с другой — пользуется поддержкой крупной корпорации. Это позволяет говорить о том, что у неё есть все шансы на стабильное развитие.
Эта библиотека, благодаря совместным усилиям всех тех, кто работает над ней, подходит для решения задач самых разных масштабов. От тех, которые возникают перед самостоятельным разработчиком, до тех, которые встают перед стартапами и даже перед крупными компаниями вроде Google. С того момента, как эта библиотека стала опенсорсной, с ноября 2015 года, она стала одной из интереснейших библиотек машинного обучения. Её всё чаще и чаще используют при проведении исследований, при разработке реальных приложений, при обучении.
TensorFlow постоянно улучшается, её постоянно снабжают чем-то новым, оптимизируют. Кроме того, растёт и сообщество, сформированное вокруг этой библиотеки.
О названии TensorFlow
Тензор (tensor) — это стандартный способ представления данных в системах глубокого обучения. Тензоры — это многомерные массивы, расширение двумерных таблиц (матриц) для представления данных, имеющих более высокие размерности. Проще говоря, тензор — это n-мерная матрица.
В целом, если вы привыкли к работе с матрицами, тензоры можно представлять себе так же, как вы представляете себе матрицы.
Начнём с установки TensorFlow.
Установка TensorFlow
Если вы начинаете работу с чистой установки Python (возможно, вы установили Python специально ради изучения TensorFlow), для установки TensorFlow достаточно воспользоваться
pip
:pip install tensorflow
Этот подход прост, но у него есть некоторые неприятные особенности. Они заключаются в том, что при установке TensorFlow, вместо уже установленных пакетов, будут установлены определённые версии пакетов-зависимостей этой библиотеки.
Если вы используете существующую установку Python и для других целей, этим методом пользоваться не рекомендуется. Один из способов установки TensorFlow с обходом вышеописанной особенности заключается в использовании виртуального окружения, которым управляет утилита
virtualenv
. Возможно, у вас уже эта утилита установлена, возможно — нет. Если она у вас не установлена, установить её можно так:pip install virtualenv
Здесь можно найти подробности о
virtualenv
.Для того чтобы установить TensorFlow в виртуальном окружении, сначала нужно такое окружение создать. Мы собираемся разместить его в папке
~/envs
, но вы можете выбрать и другую, более подходящую вам папку:cd ~
mkdir envs
virtualenv ~/envs/tensorflow
Выше мы создали виртуальное окружение
tensorflow
в папке ~/envs
(оно представлено папкой ~/envs/tensorflow
). Для того чтобы активировать это окружение, воспользуемся следующей командой:source ~/envs/tensorflow/bin/activate
После этого приглашение командной строки должно измениться, указывая на активированное виртуальное окружение:
(tensorflow)
Теперь можно установить TensorFlow в виртуальное окружение с использованием
pip
:(tensorflow) pip install tensorflow
Такая установка не повлияет на другие пакеты, установленные на компьютере.
Для выхода из виртуального окружения можно воспользоваться такой командой:
(tensorflow) deactivate
После этого приглашение командной строки примет обычный вид.
До недавних пор TensorFlow было очень сложно использовать в среде Windows. Однако после выхода TensorFlow 0.12 особых проблем в этой сфере больше не наблюдается. А именно, для установки CPU-версии TensorFlow под Windows достаточно выполнить следующую команду:
pip install tensorflow
А для установки GPU-версии — следующую:
pip install tensorflow-gpu
При установке такой версии TensorFlow предполагается, что у вас уже есть CUDA 8.
Теперь библиотека TensorFlow на вашем компьютере установлена, а значит, пришло время с ней поработать. Начнём, как это обычно бывает при изучении новых технологий, с «Hello World!».
Уважаемые читатели! Этот материал представляет собой перевод начала данной публикации, посвящённой основам TensorFlow. Как вы думаете, стоит ли переводить её дальше?

Комментарии (14)
GokenTanmay
07.05.2019 12:35+1Жалко, что это перевод. Но все равно осторожней, вы тут устанавливаете «биндинг» под python. Я тут недавно «это» тоже назвал библиотекой и нахватал минусов (мой минусовый комент).
А по сути перевода, могу подсказать то, TensorFlow очень аппаратно- и версионно- зависим. И вот что бы его установить как описанно выше (без плясок с бубном) получается только под CPU, под GPU нужно знать необходимые версии python, CUDA, самой tensorflof. Например у меня под старенькой видеокартой Nvidia GTX 660 Ti работает только следующая связка Python 3.6, CUDA 9.0 (именно 9.0, не 9.1 и не 9.2, и уж тем более не 10.х) и tensorflow == 1.5 (это под Win10, вероятно под Ubuntu 18.04 можно запустить более свежие версии). Во всех остальных случает ругается «dll not found» причем без указании конкретной dll и отправляет на сайт tesorflow в раздел траблшутинга (в корень форума, а сам дальше ищи как хочешь). Я понимаю, что устройств с поддержкой CUDA очень много и на каждое не опишешь «танец с бубном», но предостерегаю желающих попробовать, что бы не опускали руки в самом начале когда на них поваляться «ошибки без описания».Akon32
07.05.2019 13:30У вас очень старая видеокарта. Я год назад успешно запускал tensorflow-gpu на gtx760, а в этом январе не смог — бинарники из pip не собираются с нужной compute capability. Сам собрать для GPU тоже не смог. C CPU тоже облом — мой старый xeon не поддерживает AVX2.
Откатился на tensorflow == 1.5. Думаю, арендовать железо проще, чем каждый ~год покупать новое.
P.S. и всё-таки, это библиотека.
mayorovp
07.05.2019 13:16Перед установкой tensorflow нужно обязательно установить tensorflow_estimator, иначе он встаёт как-то неправильно. Подробности: https://github.com/tensorflow/tensorflow/issues/27079
Интересно, что они закрыли этот баг как решенный, хотя решения-то и нет, только workaroung.
roryorangepants
07.05.2019 13:20До недавних пор TensorFlow было очень сложно использовать в среде Windows. Однако после выхода TensorFlow 0.12 особых проблем в этой сфере больше не наблюдается.
Это версия от 2016 года. Не могли что-то посвежее перевести?
В целом, вся статья сводится к pip install и не описывает ни подводных камней установки CUDA-инфраструктуры, как отметили выше, ни куда более интересной задачи билда TF с нуля под свой компьютер, который позволяет получить профит от SSE/AVX/FMA.GokenTanmay
07.05.2019 16:03Кстати имеет ли смысл для TF взять современную видеокарточку (для домашних экспериментов разумеется) и не апгрейдить старый процессор? сейчас процессор i5-2500k для домашних задач вполне справляется, но карточка GTX 660 Ti — уже не поддерживается последними версиями TF/CUDA… что имеет смысл взять, что бы считалось ну хотя бы раза в 2 быстрее чем на 660? прицеливаюсь на GTX 1660 Тi, но пока сомневаюсь…
roryorangepants
07.05.2019 16:28i5-2500k — это в принципе не слишком уж старый процессор, но вообще при связке «топовый GPU+слабый CPU» может быть уже ботлнек в CPU и в подготовке данных, и тогда от мощной GPU просто не будет профита.
GokenTanmay
07.05.2019 18:22Т.е. обмен данными идет постоянно? А не: загрузилось все в видеокарту и там вариться? Есть какие нибудь профайлеры, которыми можно посмотреть этот обмен?
lostmsu
08.05.2019 08:41Это сильно зависит от размера модели.
Насчёт профайлера: я обычно смотрю на обычный виндовый Task Manager + GPU-Z. Это позволяет определить, что является бутылочным горлышком. CPU (или вернее обмен RAM <-> GPU RAM) часто отстаёт когда модель маленькая и/или слишком маленький размер batch.
masai
07.05.2019 18:41+1Это версия от 2016 года. Не могли что-то посвежее перевести?
Особенно, если учесть, что скоро выйдет 2.0, где очень многое поменяется и примеры кода для предыдущих версий просто станут неактуальны.
Я бы повременил с переводом и переводил бы сразу руководство к новому TF.
Tyiler
07.05.2019 14:16для Win можно с помощью dependencywalker узнать зависимости:
файлы с расширением .pyd — файлы dll. Искал месторасположение по размеру.
areafishing
08.05.2019 10:37Было бы хорошо почитать подробную статью по обучению распознавания собственного класса объектов.
roryorangepants
08.05.2019 10:42Будто бы на хабре мало таких статей.
Вот первые три, например, которые гугл выдал по подходящему запросу:
habr.com/ru/company/binarydistrict/blog/428255
habr.com/ru/post/347564
habr.com/ru/post/321834
fedorro
Как раз основные сложности с установкой нужных зависимостей и и драйверов. А установка TF сводится к pip install tensorflow[-gpu]