Учебное пособие по TensorFlow - глубокое обучение с использованием TensorFlow



Учебник по TensorFlow - третий блог в серии. Он включает в себя все основы TensorFlow. Здесь также рассказывается о том, как создать простую линейную модель.

Я разработал это руководство по TensorFlow для профессионалов и энтузиастов, которые заинтересованы в применении алгоритма глубокого обучения с использованием TensorFlow для решения различных проблем. TensorFlow - это библиотека глубокого обучения с открытым исходным кодом, основанная на концепции графов потоков данных для построения моделей. Он позволяет создавать крупномасштабные нейронные сети с множеством слоев.Изучение использования этой библиотеки также является фундаментальной частью .Ниже приведены темы, которые будут обсуждаться в этом учебном блоге TensorFlow:

  • Что такое TensorFlow
  • Основы кода TensorFlow
  • Вариант использования TensorFlow

Что такое тензоры?

В этом руководстве по TensorFlow, прежде чем говорить о TensorFlow, позвольте нам сначала понять что такое тензоры . Тензоры - это не что иное, как де-факто для представления данных в глубоком обучении.





Тензоры - Учебное пособие по TensorFlow - EdurekaКак показано на изображении выше, тензоры - это просто многомерные массивы, которые позволяют вам представлять данные с более высокими измерениями. В общем, Deep Learning имеет дело с многомерными наборами данных, где измерения относятся к различным функциям, присутствующим в наборе данных. Фактически, название «TensorFlow» произошло от операций, которые нейронные сети выполняют с тензорами. Это буквально поток тензоров. Поскольку вы поняли, что такое тензоры, давайте продолжим в этом руководстве по TensorFlow и поймем - что такое TensorFlow?

Что такое TensorFlow?

TensorFlow - это библиотека на основе Python, которая предоставляет различные типы функций для реализации моделей глубокого обучения. Как обсуждалось ранее, термин TensorFlow состоит из двух терминов - Tensor и Flow:



В TensorFlow термин тензор относится к представлению данных в виде многомерного массива, тогда как термин поток относится к серии операций, которые выполняются с тензорами, как показано на изображении выше.

Теперь мы достаточно подробно рассказали о TensorFlow.



Далее в этом руководстве по TensorFlow мы обсудим основы кода TensorFlow.

Учебное пособие по TensorFlow: основы кода

По сути, весь процесс написания программы TensorFlow состоит из двух этапов:

  1. Построение вычислительного графа
  2. Запуск вычислительного графа

Позвольте мне объяснить вам два вышеуказанных шага один за другим:

1. Построение вычислительного графа

Так, что такое вычислительный граф? Что ж, вычислительный граф - это серия операций TensorFlow, организованных в виде узлов на графе. Каждый узел принимает 0 или более тензоров на входе и производит тензор на выходе. Позвольте мне привести пример простого вычислительного графа, который состоит из трех узлов: к , б & c как показано ниже:

Объяснение приведенного выше вычислительного графика:

  • Постоянные узлыиспользуются для хранения постоянных значений, поскольку он принимает нулевой ввод, но производит сохраненные значения в качестве вывода. В приведенном выше примере a и b - постоянные узлы со значениями 5 и 6 соответственно.

  • Узел c представляет собой операцию умножения постоянного узла a на b. Следовательно, выполнение node c приведет к умножению const node a & b.

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

Здесь мы просто описываем вычисление, он ничего не вычисляет, он не содержит никаких значений, он просто определяет операции, указанные в вашем коде.

2. Запуск вычислительного графа

Давайте возьмем предыдущий пример вычислительного графа и поймем, как его выполнить. Ниже приведен код из предыдущего примера:

Пример 1:

импортировать тензорный поток как tf # Построить график a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Теперь, чтобы получить результат узла c, нам нужно запустить вычислительный граф в сессия . Сеанс помещает графические операции на Устройства, такие как ЦП или ГП, и предоставляет методы для их выполнения.

Сеанс инкапсулирует управление и состояние среды выполнения TensorFlow, то есть хранит информацию о порядке, в котором будут выполняться все операции, и передает результат уже вычисленной операции следующей операции в конвейере. Позвольте мне показать вам, как запустить приведенный выше вычислительный граф в рамках сеанса (объяснение каждой строки кода было добавлено в качестве комментария):

# Создайте объект сеанса sessions = tf.Session () # Запустите график внутри сеанса и сохраните вывод в переменной output_c = sess.run (c) # Распечатайте вывод узла c print (output_c) # Закройте сеанс, чтобы высвободить ресурсы sessions.close ()
 Вывод: 30

Итак, все было о сеансе и запуске в нем вычислительного графа. Теперь давайте поговорим о переменных и заполнителях, которые мы будем широко использовать при построении модели глубокого обучения с использованием TensorFlow.

Константы, заполнители и переменные

В TensorFlow константы, заполнители и переменные используются для представления различных параметров модели глубокого обучения. Поскольку константы я уже обсуждал ранее, начну с заполнителей.

Заполнитель:

Константа TensorFlow позволяет хранить значение, но что, если вы хотите, чтобы ваши узлы принимали входные данные на ходу? Для такого рода функций используются заполнители, которые позволяют вашему графику принимать внешние входные данные в качестве параметров. По сути, заполнитель - это обещание предоставить значение позже или во время выполнения. Позвольте мне привести пример, чтобы упростить задачу:

import tensorflow as tf # Создание заполнителей a = tf. заполнитель (tf.float32) b = tf. placeholder (tf.float32) # Назначение операции умножения w.r.t. a & ampamp b на узел mul mul = a * b # Создать объект сеанса sessions = tf.Session () # Выполнение mul путем передачи значений [1, 3] [2, 4] для a и b соответственно output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Умножение ab:', вывод)
 Вывод: [2. 12.]

Что следует помнить о заполнители:

  • Заполнители не инициализируются и не содержат данных.
  • Необходимо предоставить входы или каналы для заполнителя, которые учитываются во время выполнения.
  • Выполнение заполнителя без ввода приводит к ошибке.

А теперь давайте двигаться вперед и понимать - что такое переменные?

Переменные

В глубоком обучении заполнители используются для ввода произвольных входных данных в вашу модель или график. Помимо ввода данных, вам также необходимо изменить график, чтобы он мог выдавать новые выходные данные по сравнению с те же входы. Для этого вы будете использовать переменные. В двух словах, переменная позволяет вам добавлять такие параметры или узлы к графу, которые можно обучить, то есть значение может быть изменено в течение определенного периода времени. Переменные определяются путем предоставления их начального значения и типа, как показано ниже:

var = tf.Variable ([0.4], dtype = tf.float32)

Заметка:

  • Если вы не указали тип данных явно, TensorFlow определит тип константы / переменной из инициализированного значения.
  • TensorFlow имеет множество собственных типов данных, например tf.float32 , tf.int32 и т.п. Вы можете сослаться на все из них Вот .

Константы инициализируются при вызове tf.constant , и их ценность никогда не изменится. Напротив, переменные не инициализируются при вызове tf.Variable . Чтобы инициализировать все переменные в программе TensorFlow, вы должен явно вызвать специальную операцию, как показано ниже:

init = tf.global_variables_initializer () sessions.run (инициализация)

Всегда помните, что перед первым использованием графика необходимо инициализировать переменную.

Заметка: Переменные TensorFlow - это буферы в памяти, которые содержат тензоры, но в отличие от обычных тензоров, которые создаются только при запуске графа и сразу же удаляются после этого, переменные сохраняются при многократном выполнении графа.

Теперь, когда мы рассмотрели достаточно основ TensorFlow, давайте продолжим и поймем, как реализовать модель линейной регрессии с помощью TensorFlow.

Модель линейной регрессии с использованием TensorFlow

Модель линейной регрессии используется для прогнозирования неизвестного значения переменной (зависимая переменная) на основе известного значения других переменных (независимая переменная) с использованием уравнения линейной регрессии, как показано ниже:

Поэтому для создания линейной модели вам понадобятся:

что такое подстрока в Java
  1. Зависимая или выходная переменная (Y)
  2. Переменная наклона (w)
  3. Y - перехват или смещение (b)
  4. Независимая или входная переменная (X)

Итак, приступим к построению линейной модели с помощью TensorFlow:

Скопируйте код, нажав кнопку ниже:

# Создание переменной для наклона параметра (W) с начальным значением 0,4 W = tf.Variable ([. 4], tf.float32) # Создание переменной для параметра смещения (b) с начальным значением -0,4 b = tf.Variable ( [-0.4], tf.float32) # Создание заполнителей для предоставления входных или независимых переменных, обозначенных как xx = tf.placeholder (tf.float32) # Уравнение линейной регрессии linear_model = W * x + b # Инициализация всех переменных sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Запуск регрессионной модели для вычисления вывода по для предоставленных значений x print (sessions.run (linear_model {x: [1, 2, 3, 4]}))

Вывод:

[0. 0.40000001 0.80000007 1.20000005]

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

  • Во-первых, нам нужно предоставить механизм, с помощью которого наша модель может автоматически обучаться на основе заданного набора входов и соответствующих выходов.
  • Второе, что нам нужно, это проверить нашу обученную модель, сравнив ее выходные данные с желаемыми или целевыми выходными данными на основе заданного набора значений x.

Теперь давайте поймем, как я могу включить указанные выше функции в свой код для регрессионной модели.

Функция потерь - проверка модели

Функция потерь измеряет, насколько далеко текущий результат модели от желаемого или целевого вывода. Я буду использовать наиболее часто используемую функцию потерь для моей модели линейной регрессии, которая называется Sum of Squared Error или SSE. SSE рассчитано относительно выход модели (представленный linear_model) и желаемый или целевой выход (y) как:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Вывод: 90,24

Как видите, мы получаем большие убытки. Следовательно, нам необходимо скорректировать наши веса (W) и смещение (b), чтобы уменьшить получаемую нами ошибку.

тf.train API - Обучение модели

TensorFlow предоставляет оптимизаторы которые медленно изменяют каждую переменную, чтобы минимизировать функцию потерь или ошибку. Самый простой оптимизатор - это градиентный спуск . Он изменяет каждую переменную в соответствии с величиной производной потерь по этой переменной.

# Создание экземпляра оптимизатора градиентного спуска optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) для i в диапазоне (1000): sessions.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sessions.run ([W, b]))
 Вывод: [массив ([1.99999964], dtype = float32), array ([9.86305167e-07], dtype = float32)]

Итак, вот как вы создаете линейную модель с помощью TensorFlow и обучаете ее для получения желаемого результата.

Теперь, когда вы знаете о глубоком обучении, ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Курс Edureka Deep Learning with TensorFlow Certification Training помогает учащимся стать экспертами в обучении и оптимизации базовых и сверточных нейронных сетей с использованием проектов и заданий в реальном времени, а также таких понятий, как функция SoftMax, нейронные сети с автокодированием, ограниченная машина Больцмана (RBM).

Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.