Рубрики

Введение в Tensor с Tensorflow

Введение в тензор потока и тензор наряду с реализацией тензоров в тензор потока.

Что такое Tensorflow и как он работает

TensorFlow — это библиотека программного обеспечения с открытым исходным кодом для программирования потоков данных в различных задачах. Это символическая математическая библиотека, которая также используется для приложений машинного обучения, таких как нейронные сети. Google с открытым исходным кодом TensorFlow в ноябре 2015 года. С тех пор TensorFlow стал самым популярным хранилищем машинного обучения на Github. (Https://github.com/tensorflow/tensorflow)

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

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

Что такое Tensor в Tensorflow?

TensorFlow, как видно из названия, является платформой для определения и запуска вычислений с использованием тензоров. Тензор — это обобщение векторов и матриц на потенциально более высокие измерения. Внутри TensorFlow представляет тензоры в виде n-мерных массивов базовых типов данных. Каждый элемент в Tensor имеет одинаковый тип данных, и тип данных всегда известен. Форма (то есть число измерений и размер каждого измерения) может быть известна лишь частично. Большинство операций производят тензоры полностью известных форм, если формы их входных данных также полностью известны, но в некоторых случаях можно найти форму тензора только во время выполнения графа.

Общие схемы алгоритма TensorFlow

Здесь мы представим общий поток алгоритмов тензорного потока.

  1. Импортировать или генерировать данные

    Все наши алгоритмы машинного обучения будут зависеть от данных. На практике мы будем либо генерировать данные, либо использовать внешний источник данных. Иногда лучше полагаться на сгенерированные данные, потому что мы хотим знать ожидаемый результат. А также tenorflow поставляется с предустановленными известными наборами данных, такими как MNIST, CIFAR-10 и т. Д.

  2. Преобразование и нормализация данных

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

    data = tf.nn.batch_norm_with_global_normalization(...)
  3. Установить параметры алгоритма

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

    learning_rate = 0.001  iterations = 1000
  4. Инициализируйте переменные и заполнители

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

    a_var = tf.constant(42)  x_input = tf.placeholder(tf.float32, [None, input_size])  y_input = tf.placeholder(tf.fload32, [None, num_classes])
  5. Определить структуру модели

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

    y_pred = tf.add(tf.mul(x_input, weight_matrix), b_matrix)
  6. Объявить функции потерь

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

    loss = tf.reduce_mean(tf.square(y_actual – y_pred))
  7. Инициализировать и обучить модель

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

    with tf.Session(graph=graph) as session:
     ...
     session.run(...)
     ...

    Обратите внимание, что мы также можем начать наш граф с

    session = tf.Session(graph=graph)  session.run(…)
  8. Оценить модель (необязательно)

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

  9. Предсказать новые результаты (необязательно)

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

Резюме

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

В целом, алгоритмы в TensorFlow рассчитаны на цикличность. Мы устанавливаем этот цикл как вычислительный граф и (1) вводим данные через заполнители, (2) вычисляем вывод вычислительного графа, (3) сравниваем вывод с желаемым выводом с помощью функции потерь, (4) модифицируем переменные модели в соответствии с автоматическим обратным распространением и, наконец, (5) повторяют процесс до тех пор, пока не будут выполнены критерии остановки.

Теперь начинается практическое занятие с тензорным потоком и его реализация реализует.

Во-первых, нам нужно импортировать необходимые библиотеки.

import tensorflow as tf
from tensorflow.python.framework import ops
ops.reset_default_graph()

Затем начать сеанс графа

sess = tf.Session()

Теперь начинается основная часть, т. Е. Создание тензоров.

TensorFlow имеет встроенную функцию для создания тензоров для использования в переменных. Например, мы можем создать заполненный нулями тензор предварительно определенной формы, используя функцию tf.zeros () следующим образом.

my_tensor = tf.zeros([1,20])

Мы можем оценить тензоры, вызвав метод run () в нашей сессии.

sess.run(my_tensor)

Алгоритмы TensorFlow должны знать, какие объекты являются переменными, а какие — константами. Поэтому мы создаем переменную, используя функцию TensorFlow tf.Variable (). Обратите внимание, что вы не можете запустить sess.run (my_var), это приведет к ошибке. Поскольку TensorFlow работает с вычислительными графами, мы должны создать операцию инициализации переменной, чтобы оценить переменные. Для этого скрипта мы можем инициализировать одну переменную за один раз, вызывая метод переменной my_var.initializer.

my_var = tf.Variable(tf.zeros([1,20]))
sess.run(my_var.initializer)
sess.run(my_var)

Выход:

array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  
              0.,  0.,  0.,  0.,  0.,  0.,  0.,  
              0.,  0.,  0.,  0.,  0.,  0.]], dtype=float32)

Теперь давайте создадим нашу переменную для обработки измерений определенной формы, затем инициализируем переменные со всеми «1» или «0»

row_dim = 2
col_dim = 3
zero_var = tf.Variable(tf.zeros([row_dim, col_dim]))
ones_var = tf.Variable(tf.ones([row_dim, col_dim]))

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

sess.run(zero_var.initializer)
sess.run(ones_var.initializer)
print(sess.run(zero_var))
print(sess.run(ones_var))

Выход:

[[ 0.  0.  0.]
 [ 0.  0.  0.]]
[[ 1.  1.  1.]
 [ 1.  1.  1.]]

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

Визуализация создания переменной в TensorBoard

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

# Сброс графика
ops.reset_default_graph()

  
# Начать графическую сессию

sess = tf.Session()

  
# Создать переменную

my_var = tf.Variable(tf.zeros([1,20]))

  
# Добавить резюме на тензорную доску

merged = tf.summary.merge_all()

  
# Инициализировать график записи:

writer = tf.summary.FileWriter("/tmp/variable_logs", graph=sess.graph)

  
# Инициализировать операцию

initialize_op = tf.global_variables_initializer()

  
# Запустить инициализацию переменной
sess.run(initialize_op)

Теперь запустите следующую команду в cmd.

tensorboard --logdir=/tmp

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

Код для создания всех типов тензоров и их оценки.

import tensorflow as tf

from tensorflow.python.framework import ops

ops.reset_default_graph()

  
# Введите тензоры в тф

  
# Получить дескриптор графа

sess = tf.Session()

  

my_tensor = tf.zeros([1,20])

  
# Объявить переменную

my_var = tf.Variable(tf.zeros([1,20]))

  
# Различные виды переменных

row_dim = 2

col_dim = 3 

  
# Нулевая инициализированная переменная

zero_var = tf.Variable(tf.zeros([row_dim, col_dim]))

  
# Одна инициализированная переменная

ones_var = tf.Variable(tf.ones([row_dim, col_dim]))

  
# в форме другой переменной
sess.run(zero_var.initializer)
sess.run(ones_var.initializer)

zero_similar = tf.Variable(tf.zeros_like(zero_var))

ones_similar = tf.Variable(tf.ones_like(ones_var))

  
sess.run(ones_similar.initializer)
sess.run(zero_similar.initializer)

  
# Заполнить форму постоянной

fill_var = tf.Variable(tf.fill([row_dim, col_dim], -1))

  
# Создать переменную из константы

const_var = tf.Variable(tf.constant([8, 6, 7, 5, 3, 0, 9]))

# Это также можно использовать для заполнения массива:

const_fill_var = tf.Variable(tf.constant(-1, shape=[row_dim, col_dim]))

  
# Генерация последовательности

linear_var = tf.Variable(tf.linspace(start=0.0, stop=1.0, num=3)) # Генерирует [0.0, 0.5, 1.0] включает в себя конец

  

sequence_var = tf.Variable(tf.range(start=6, limit=15, delta=3)) # Генерирует [6, 9, 12] не включает в себя конец

  
# Случайные числа

  
# Случайный Нормальный

rnorm_var = tf.random_normal([row_dim, col_dim], mean=0.0, stddev=1.0)

  
# Добавить резюме на тензорную доску

merged = tf.summary.merge_all()

  
# Инициализировать график записи:

  

writer = tf.summary.FileWriter("/tmp/variable_logs", graph=sess.graph)

  
# Инициализировать операцию

initialize_op = tf.global_variables_initializer()

  
# Запустить инициализацию переменной
sess.run(initialize_op)

Выход:

Ссылка Ссылка:

1) Tensorflow документация

Рекомендуемые посты:

Введение в Tensor с Tensorflow

0.00 (0%) 0 votes