Учебное пособие по TensorFlow: 10 минутное практическое занятие по TensorFlow для начинающих [перевод] |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-09-02 10:19 Представляю вашему вниманию перевод статьи "TensorFlow Tutorial: 10 minutes Practical TensorFlow lesson for quick learners" автора Ankit Sachan. Этот туториал по TensorFlow предназначен для тех, кто имеет общее представление о машинном обучении и пытается начать работу с TensorFlow. Прежде всего у вас должен быть установлен TensorFlow. Вы можете его установить по этому руководству. Этот урок разделен на две части: в первой части мы объясняем основы на рабочем примере, во второй части мы строим модель линейной регрессии. Часть 1. Основы TensorFlow TensorFlow — это библиотека для численных расчетов, в которой данные проходят через граф. Данные в TensorFlow представлены n-мерными массивами — тензорами. Граф составлен из данных (тензоров) и математических операций. В узлах графа находятся математические операции. Ребра графа представляют тензоры, которые "перетекают" между операциями. Есть еще один аспект, в котором TensorFlow сильно отличается от любого другого языка программирования. В TensorFlow вам сначала нужно создать проект того, что вы хотите создать. Изначально при создании графа переменные не имеют значений. Позже, когда вы создали полный граф, вы запускаете его в сессии и только тогда переменные будут принимать какие-либо значения. Давайте начнем учиться на практике. Запустите python и импортируйте TensorFlow:
Для определения операций используется граф, при этом все операции выполняются в сессии. Графы и сессии создаются независимо друг от друга. Относитесь к графу как к проекту строительства, а к сессии как к строительной площадке. 1.1. Графы в TensorFlow Граф это основа TensorFlow, все вычисления (операции), переменные находятся на графе. Все, что происходит в коде, находится на дефолтном графе, предоставленном TensorFlow. Вы можете получить доступ к этому графу следующим образом:
А так вы можете получить список всех операций в этом графе:
Сейчас ваш граф пуст. Если вам необходимо напечатать название каждой операции выполните следующий код:
Вывод снова будет пустым. В будущем, после добавления операций в граф, мы будем использовать этот код для вывода их названий. 1.2. Сессии в TensorFlow Граф только определяет вычисления (создает проект), но не имеет никаких переменных, никаких значений, если мы не запустим граф или часть графа в сессии. Вы можете создать сессию так:
Не забывайте, что начав сессию вам необходимо ее завершить или использовать блок with… as, например вот так:
Плюсом использования такого подхода является то что сессия будет закрыта автоматически в конце блока with 1.3. Тензоры в TensorFlow TensorFlow хранит данные в тензорах — многомерных массивах очень похожих на массивы numPy. a) Константы — это значения которые не могут быть изменены. Они определяются так:
при этом при попытке вывода вы получите следующее:
Как вы можете видеть, это отличается от других языков программирования, например от python. Вы не можете распечатать или получить доступ к константе до тех пор пока не запустите сессию. Давайте так и сделаем:
Этот код выведет 1.0 b) Переменные это тоже тензоры которые походи на переменные в других языках программирования:
В отличие от констант переменные могут менять свое содержимое. Однако переменные в TensorFlow должны быть инициализированы в отдельной операции инициализации. Может быть достаточно трудоемко инициализировать все переменные, но TensorFlow предоставляет механизм для инициализации всех переменных за раз:
Теперь необходимо запустить операцию инициализации до того как вы попытаетесь получить доступ к переменной:
Этот код выведет 2.0
то получите следующий вывод:
Как видите, мы объявили «a» как Const и она была добавлена к графику. Аналогично, для переменной b в граф TensorFlow было добавлено много состояний «test_var», таких как test_var/initial_value, test_var/read и т. д. Вы можете визуализировать всю сеть, используя TensorBoard, который представляет собой инструмент для визуализации графика TensorFlow и процесса обучения. с) Плейсхолдеры — это тензоры, ожидающие инициализации данными. Они используются для данных которые будут предоставлены только когда код фактически будет выполнен в сеансе. То, что передается в плейсхолдер это словарь который содержит названия плейсхолдеров и их значения:
Данный код выведет 6.0 1.4. Устройства в TensorFlow TensorFlow имеет очень мощные встроенные возможности для запуска вашего кода на GPU, CPU или кластерах. Он предоставляет вам возможность выбрать устройство, на котором вы хотите запускать ваш код. Однако, это не то о чем стоит задумываться когда вы только начинаете знакомство с TF. Часть 2. Туториал по TensorFlow с простым примером В этой части мы рассмотрим код для запуска линейной регрессии. Перед этим давайте рассмотрим некоторые основные функции TensorFlow, которые мы будем использовать в коде. Создание случайного нормального распределения: Используйте random_normal для создания случайных значений из нормального распределения. В этом примере w — это переменная размерности 784 * 10 со случайными значениями со стандартным отклонением 0,01.
Reduce_mean — вычисляет среднее значение массива
Данный код выведет 35 argmax — очень похож на argmax в Python. Получает максимальное значение из тензора вдоль указанной оси.
Выведет массив ([2, 0]), который показывает индекс максимального значения в каждой из строк a. Задача линейной регрессии Постановка задачи: имеется большое количество точек данных, пытаетесь им в соответствие прямую линию. Для этого примера мы создадим 100 точек данных и попытаемся поставить им в соответствие линию. 2.1. Создание тренировочного набора данных trainX содержит значения между -1 и 1, а trainY — увеличенное в 3 раза значение trainX плюс некоторую случайную величину:
2.2. Плейсхолдеры
2.3. Моделирование Модель линейной регрессии имеет вид
— мы должны вычислить значение w. Давайте инициализируем w нулевым значением и создадим модель для решения этой проблемы. Мы определяем функцию стоимость как
TensorFlow поставляется со многими оптимизаторами, которые рассчитывают и обновляют градиенты после каждой итерации, пытаясь минимизировать указанной функции стоимости. Мы собираемся определить операцию обучения используя GradientDescentOptimizer, чтобы минимизировать нашу функцию стоимости при скорости обучения 0,01. Затем мы запустим это операцию обучения в цикле.
2.4. Обучение До этого момента мы только определили граф. Никаких вычислений не происходило, ни одна из переменных TensorFlow не имеет значения. Чтобы запустить этот граф, нам нужно создать сессию и выполнить ее. Перед этим нам нужно создать операцию инициализации для всех переменных:
Обратите внимание, что первое, что было сделано, — это инициализация переменных путем вызова init внутри session.run(). Позже мы запускаем train_op, скармливая ей feed_dict. Наконец, мы печатаем значение w (снова внутри sess.run()), которое должно быть около 3. Упражнение: Если вы создадите новую сессию после этого кода и попытаетесь напечатать w, что выведется?
Да, вы правильно поняли, выведется 0.0. Как только мы вышли из сессии, созданной ранее, все операции перестают существовать. Надеюсь, этот урок даст вам быстрый старт с TensorFlow. Пожалуйста, не стесняйтесь задавать свои вопросы в комментариях. Полный код можно скачать здесь. Источник: habr.com Комментарии: |
|