Наука о данных

Учебное пособие по Python Tensorflow

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

В целом, в этом уроке мы рассмотрим три основные темы:

  1. Что такое тензоры и TensorFlow
  2. Применение алгоритмов машинного обучения с TensorFlow
  3. Примеры использования TensorFlow

TensorFlow - отличный пакет Python от Google, который хорошо использует парадигму программирования потока данных для высокооптимизированных математических вычислений. Некоторые особенности TensorFlow:

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

Установка TensorFlow

Поскольку мы будем использовать Python API для TensorFlow, хорошо знать, что он работает как с Python 2.7 и 3.3+ версии. Давайте установим библиотеку TensorFlow, прежде чем мы перейдем к реальным примерам и концепциям. Есть два способа установить этот пакет. Первый включает использование диспетчера пакетов Python, pip:

pip install tensorflow

Второй способ относится к Anaconda, мы можем установить пакет как:

conda install -c conda-forge tensorflow

Не стесняйтесь искать ночные сборки и версии графического процессора на официальных страницах установки TensorFlow.

Я буду использовать менеджер Anaconda для всех примеров в этом уроке. Я запущу Jupyter Notebook для того же:

Теперь, когда мы готовы со всеми операторами импорта для написания некоторого кода, давайте начнем погружаться в пакет SciPy с некоторыми практическими примерами.

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

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

Как описано на изображении, тензоры можно назвать n-мерным массивом что позволяет нам представлять данные в сложных измерениях. Мы можем рассматривать каждое измерение как отдельную особенность данных в глубоком обучении. Это означает, что тензоры могут стать довольно сложными, когда дело доходит до сложных наборов данных с большим количеством функций.

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

Понимание TensorFlow с константами

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

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

импортировать тензорный поток как tf
х = tf.постоянная (5)
у = tf.постоянная (6)
г = х * у
печать (z)

Когда мы запустим этот пример, мы увидим следующий результат:

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

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

# Начать с объекта сеанса
сессия = tf.Сессия ()
# Предоставляем вычисление сеансу и сохраняем его
результат = сеанс.бег (z)
# Распечатать результат вычисления
печать (результат)
# Закрыть сессию
сессия.Закрыть()

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

Хотя мы получили предупреждение от TensorFlow, мы все равно получили правильный результат вычисления.

Одноэлементные тензорные операции

Точно так же, как мы умножили два постоянных тензора в последнем примере, у нас есть много других операций в TensorFlow, которые могут выполняться с отдельными элементами:

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

импортировать тензорный поток как tf
импортировать numpy как np
тензор = np.массив ([2, 5, 8])
тензор = tf.convert_to_tensor (тензор, dtype = tf.float64)
с tf.Session () как сеанс:
print (сессия.запустить (tf.cos (тензор)))

Когда мы запустим этот пример, мы увидим следующий результат:

Здесь мы поняли две важные концепции:

  1. Любой массив NumPy можно легко преобразовать в тензор с помощью функции convert_to_tensor
  2. Операция выполнялась над каждым элементом массива NumPy

Заполнители и переменные

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

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

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

импортировать тензорный поток как tf
# Два заполнителя
х = tf. заполнитель (tf.float32)
у = tf. заполнитель (tf.float32)
# Назначение операции умножения w.р.т. а & b в узел Mul
г = х * у
# Создать сеанс
сессия = tf.Сессия ()
# Передавать значения для placehollders
результат = сеанс.run (z, x: [2, 5], y: [3, 7])
print ('Умножение x и y:', результат)

Когда мы запустим этот пример, мы увидим следующий результат:

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

х = tf.Переменная ([5.2], dtype = tf.float32)

В приведенном выше уравнении x - это переменная, которой задано ее начальное значение и тип данных. Если мы не предоставим тип данных, он будет выведен TensorFlow с его начальным значением. Обратитесь к типам данных TensorFlow здесь.

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

init = tf.global_variables_initializer ()
сессия.запустить (инициализация)

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

Линейная регрессия с TensorFlow

Линейная регрессия - один из наиболее распространенных алгоритмов, используемых для установления взаимосвязи в заданных непрерывных данных. Это отношение между координатными точками, скажем x и y, называется гипотеза. Когда мы говорим о линейной регрессии, гипотеза представляет собой прямую линию:

у = mx + c

Здесь m - наклон прямой, а здесь - вектор, представляющий веса. c - постоянный коэффициент (точка пересечения с y), и здесь он представляет собой Предвзятость. Вес и смещение называются параметры модели.

Линейные регрессии позволяют нам оценить значения веса и смещения так, чтобы у нас было минимум функция стоимости. Наконец, x - независимая переменная в уравнении, а y - зависимая переменная. Теперь давайте начнем строить линейную модель в TensorFlow с простого фрагмента кода, который мы объясним:

импортировать тензорный поток как tf
# Переменные для параметра крутизны (W) с начальным значением 1.1
W = tf.Переменная ([1.1], тс.float32)
# Переменная для смещения (b) с начальным значением -1.1
b = tf.Переменная ([- 1.1], тс.float32)
# Заполнители для ввода или независимой переменной, обозначаемой x
х = tf.заполнитель (tf.float32)
# Уравнение прямой или линейная регрессия
linear_model = W * x + b
# Инициализация всех переменных
сессия = tf.Сессия ()
init = tf.global_variables_initializer ()
сессия.запустить (инициализация)
# Выполнить регрессионную модель
print (сессия.запустить (линейная_модель x: [2, 5, 7, 9]))

Здесь мы сделали именно то, что объясняли ранее, давайте подведем итоги:

Когда мы запустим этот пример, мы увидим следующий результат:

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

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

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

Уравнение для SSE имеет вид:

E = 1/2 * (t - y) 2

Здесь:

Теперь давайте напишем фрагмент кода в продолжение последнего фрагмента, чтобы отразить значение потерь:

у = tf.заполнитель (tf.float32)
error = linear_model - y
squared_errors = tf.квадрат (ошибка)
потеря = tf.уменьшить_сумма (квадрат_ошибки)
print (сессия.run (проигрыш, x: [2, 5, 7, 9], y: [2, 4, 6, 8]))

Когда мы запустим этот пример, мы увидим следующий результат:

Ясно, что величина потерь очень мала для данной модели линейной регрессии.

Заключение

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

Контроль и управление перемещением мыши между несколькими мониторами в Windows 10
Диспетчер мыши с двумя дисплеями позволяет контролировать и настраивать движение мыши между несколькими мониторами, замедляя ее движения возле границы...
WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...