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

image

Этот материал посвящён основам 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)


  1. fedorro
    07.05.2019 12:24
    +1

    При установке такой версии TensorFlow предполагается, что у вас уже есть CUDA 8.

    Как раз основные сложности с установкой нужных зависимостей и и драйверов. А установка TF сводится к pip install tensorflow[-gpu]


  1. 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 очень много и на каждое не опишешь «танец с бубном», но предостерегаю желающих попробовать, что бы не опускали руки в самом начале когда на них поваляться «ошибки без описания».


    1. Akon32
      07.05.2019 13:30

      У вас очень старая видеокарта. Я год назад успешно запускал tensorflow-gpu на gtx760, а в этом январе не смог — бинарники из pip не собираются с нужной compute capability. Сам собрать для GPU тоже не смог. C CPU тоже облом — мой старый xeon не поддерживает AVX2.
      Откатился на tensorflow == 1.5. Думаю, арендовать железо проще, чем каждый ~год покупать новое.


      P.S. и всё-таки, это библиотека.


  1. mayorovp
    07.05.2019 13:16

    Перед установкой tensorflow нужно обязательно установить tensorflow_estimator, иначе он встаёт как-то неправильно. Подробности: https://github.com/tensorflow/tensorflow/issues/27079


    Интересно, что они закрыли этот баг как решенный, хотя решения-то и нет, только workaroung.


  1. roryorangepants
    07.05.2019 13:20

    До недавних пор TensorFlow было очень сложно использовать в среде Windows. Однако после выхода TensorFlow 0.12 особых проблем в этой сфере больше не наблюдается.

    Это версия от 2016 года. Не могли что-то посвежее перевести?

    В целом, вся статья сводится к pip install и не описывает ни подводных камней установки CUDA-инфраструктуры, как отметили выше, ни куда более интересной задачи билда TF с нуля под свой компьютер, который позволяет получить профит от SSE/AVX/FMA.


    1. GokenTanmay
      07.05.2019 16:03

      Кстати имеет ли смысл для TF взять современную видеокарточку (для домашних экспериментов разумеется) и не апгрейдить старый процессор? сейчас процессор i5-2500k для домашних задач вполне справляется, но карточка GTX 660 Ti — уже не поддерживается последними версиями TF/CUDA… что имеет смысл взять, что бы считалось ну хотя бы раза в 2 быстрее чем на 660? прицеливаюсь на GTX 1660 Тi, но пока сомневаюсь…


      1. roryorangepants
        07.05.2019 16:28

        i5-2500k — это в принципе не слишком уж старый процессор, но вообще при связке «топовый GPU+слабый CPU» может быть уже ботлнек в CPU и в подготовке данных, и тогда от мощной GPU просто не будет профита.


        1. GokenTanmay
          07.05.2019 18:22

          Т.е. обмен данными идет постоянно? А не: загрузилось все в видеокарту и там вариться? Есть какие нибудь профайлеры, которыми можно посмотреть этот обмен?


          1. lostmsu
            08.05.2019 08:41

            Это сильно зависит от размера модели.

            Насчёт профайлера: я обычно смотрю на обычный виндовый Task Manager + GPU-Z. Это позволяет определить, что является бутылочным горлышком. CPU (или вернее обмен RAM <-> GPU RAM) часто отстаёт когда модель маленькая и/или слишком маленький размер batch.


    1. masai
      07.05.2019 18:41
      +1

      Это версия от 2016 года. Не могли что-то посвежее перевести?

      Особенно, если учесть, что скоро выйдет 2.0, где очень многое поменяется и примеры кода для предыдущих версий просто станут неактуальны.


      Я бы повременил с переводом и переводил бы сразу руководство к новому TF.


  1. Tyiler
    07.05.2019 14:16

    для Win можно с помощью dependencywalker узнать зависимости:



    файлы с расширением .pyd — файлы dll. Искал месторасположение по размеру.


  1. areafishing
    08.05.2019 10:37

    Было бы хорошо почитать подробную статью по обучению распознавания собственного класса объектов.


    1. roryorangepants
      08.05.2019 10:42

      Будто бы на хабре мало таких статей.

      Вот первые три, например, которые гугл выдал по подходящему запросу:
      habr.com/ru/company/binarydistrict/blog/428255
      habr.com/ru/post/347564
      habr.com/ru/post/321834


      1. areafishing
        08.05.2019 10:45

        Видимо крайне плохо ищу. Извините
        Но спасибо за статьи!