Что такое TensorFlow? Как это устроено? Введение & Архитектура

Содержание:

Anonim

Начнем это руководство с введения в TensorFlow:

Что такое TensorFlow?

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

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

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

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

  • Исследователи
  • Специалисты по данным
  • Программисты.

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

Google не просто располагает данными; у них самый массивный компьютер в мире, поэтому Tensor Flow создавался для масштабирования. TensorFlow - это библиотека, разработанная Google Brain Team для ускорения машинного обучения и глубоких исследований нейронных сетей.

Он был создан для работы на нескольких процессорах или графических процессорах и даже в мобильных операционных системах и имеет несколько оболочек на нескольких языках, таких как Python, C ++ или Java.

В этом руководстве по TensorFlow вы узнаете

  • Что такое TensorFlow?
  • История TensorFlow
  • Как работает TensorFlow
  • Архитектура TensorFlow
  • Где можно запустить Tensorflow?
  • Введение в компоненты TensorFlow
  • Почему TensorFlow популярен?
  • Список известных алгоритмов, поддерживаемых TensorFlow
  • Простой пример TensorFlow
  • Параметры загрузки данных в TensorFlow
  • Создать конвейер Tensorflow

История TensorFlow

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

  • Gmail
  • Фото
  • Поисковая система Google

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

Впервые он был обнародован в конце 2015 года, а первая стабильная версия появилась в 2017 году. Это открытый исходный код под лицензией Apache Open Source. Вы можете использовать его, изменять и распространять измененную версию за определенную плату, ничего не платя Google.

Далее в этом руководстве по глубокому обучению TensorFlow мы узнаем об архитектуре TensorFlow и о том, как работает TensorFlow.

Как работает TensorFlow

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

Архитектура TensorFlow

Архитектура Tensorflow состоит из трех частей:

  • Предварительная обработка данных
  • Построить модель
  • Обучите и оцените модель

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

Вот почему он называется TensorFlow, потому что тензор проходит через список операций, а затем выходит с другой стороны.

Где можно запустить Tensorflow?

Требования к оборудованию и программному обеспечению TensorFlow можно разделить на следующие категории:

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

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

  • Рабочий стол под управлением Windows, macOS или Linux
  • Облако как веб-сервис
  • Мобильные устройства, такие как iOS и Android

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

Модель можно обучать и использовать как на графических процессорах, так и на процессорах. Изначально графические процессоры были разработаны для видеоигр. В конце 2010 года исследователи из Стэнфорда обнаружили, что GPU также очень хорошо справляется с матричными операциями и алгеброй, так что делает их очень быстрыми для выполнения подобных вычислений. Глубокое обучение во многом основано на умножении матриц. TensorFlow очень быстро вычисляет умножение матриц, потому что он написан на C ++. Хотя он реализован на C ++, доступ к TensorFlow и управление им можно получить с помощью других языков, в основном Python.

Наконец, важной особенностью TensorFlow является TensorBoard. TensorBoard позволяет графически и визуально отслеживать, что делает TensorFlow.

Введение в компоненты TensorFlow

Тензор

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

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

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

Графики

TensorFlow использует структуру графа. На графике собраны и описаны все серии вычислений, выполненных во время обучения. У графика есть масса преимуществ:

  • Это было сделано для работы на нескольких процессорах или графических процессорах и даже в мобильной операционной системе.
  • Переносимость графа позволяет сохранять вычисления для немедленного или более позднего использования. График можно сохранить для использования в будущем.
  • Все вычисления на графике производятся путем соединения тензоров вместе.
    • Тензор имеет узел и ребро. Узел выполняет математическую операцию и производит выходные данные конечных точек. Ребра ребра объясняют отношения ввода / вывода между узлами.

Почему TensorFlow популярен?

TensorFlow - лучшая библиотека из всех, потому что она построена так, чтобы быть доступной для всех. Библиотека Tensorflow включает в себя различные API для создания масштабной архитектуры глубокого обучения, такой как CNN или RNN. TensorFlow основан на вычислении графов; он позволяет разработчику визуализировать построение нейронной сети с помощью Tensorboad. Этот инструмент полезен для отладки программы. Наконец, Tensorflow создан для масштабного развертывания. Он работает на процессоре и графическом процессоре.

Tensorflow пользуется наибольшей популярностью на GitHub по сравнению с другими фреймворками глубокого обучения.

Список известных алгоритмов, поддерживаемых TensorFlow

Ниже приведен список поддерживаемых алгоритмов TensorFlow:

В настоящее время TensorFlow 1.10 имеет встроенный API для:

  • Линейная регрессия: tf.estimator.LinearRegressor
  • Классификация: tf.estimator.LinearClassifier
  • Классификация глубокого обучения: tf.estimator.DNNClassifier
  • Очистка и глубокое обучение: tf.estimator.DNNLinearCombinedClassifier
  • Регрессия бустерного дерева: tf.estimator.BoostedTreesRegressor
  • Классификация усиленного дерева: tf.estimator.BoostedTreesClassifier

Простой пример TensorFlow

import numpy as npimport tensorflow as tf

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

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

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

Пример TensorFlow

Наконец, мы запустим сеанс TensorFlow, который запустит вычислительный граф со значениями X_1 и X_2 и распечатает результат умножения.

Определим входные узлы X_1 и X_2. Когда мы создаем узел в Tensorflow, мы должны выбрать, какой узел создать. Узлы X1 и X2 будут узлами-заполнителями. Заполнитель присваивает новое значение каждый раз, когда мы делаем расчет. Мы создадим их как узел-заполнитель точки TF.

Шаг 1. Определите переменную

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")

Когда мы создаем узел-заполнитель, мы должны передать тип данных, который будет добавлять сюда числа, чтобы мы могли использовать тип данных с плавающей запятой, давайте использовать tf.float32. Нам также нужно дать этому узлу имя. Это имя появится, когда мы посмотрим на графические визуализации нашей модели. Назовем этот узел X_1, передав параметр name со значением X_1, а теперь определим X_2 таким же образом. X_2.

Шаг 2: Определите вычисление

multiply = tf.multiply(X_1, X_2, name = "multiply")

Теперь мы можем определить узел, который выполняет операцию умножения. В Tensorflow мы можем сделать это, создав узел tf.multiply.

Мы передадим узлы X_1 и X_2 узлу умножения. Он сообщает тензорному потоку связать эти узлы в вычислительном графе, поэтому мы просим его извлечь значения из x и y и умножить результат. Давайте также дадим узлу умножения имя умножение. Это полное определение нашего простого вычислительного графа.

Шаг 3: Выполните операцию

Чтобы выполнять операции в графе, мы должны создать сеанс. В Tensorflow это делается с помощью tf.Session (). Теперь, когда у нас есть сеанс, мы можем попросить сеанс запустить операции на нашем вычислительном графе, вызвав session. Чтобы запустить вычисление, нам нужно использовать run.

Когда операция сложения запускается, она увидит, что ей нужно получить значения узлов X_1 и X_2, поэтому нам также необходимо ввести значения для X_1 и X_2. Мы можем сделать это, указав параметр с именем feed_dict. Мы передаем значение 1,2,3 для X_1 и 4,5,6 для X_2.

Мы печатаем результаты с помощью print (result). Мы должны увидеть 4, 10 и 18 для 1x4, 2x5 и 3x6.

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]

Параметры загрузки данных в TensorFlow

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

1. Загрузите данные в память: это самый простой способ. Вы загружаете все свои данные в память как единый массив. Вы можете написать код Python. Эти строки кода не имеют отношения к Tensorflow.

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

Какой раствор использовать?

Загрузить данные в память

Если ваш набор данных не слишком велик, то есть меньше 10 гигабайт, вы можете использовать первый метод. Данные могут поместиться в памяти. Вы можете использовать известную библиотеку под названием Pandas для импорта файлов CSV. Вы узнаете больше о пандах в следующем уроке.

Загрузка данных с помощью конвейера Tensorflow

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

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

В следующих уроках вы увидите, как построить значительный конвейер для питания вашей нейронной сети.

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

Если у вас большой набор данных и вы хотите использовать несколько процессоров, вам будет удобнее работать с конвейером Tensorflow.

Создать конвейер Tensorflow

В предыдущем примере мы вручную добавляем три значения для X_1 и X_2. Теперь посмотрим, как загружать данные в Tensorflow.

Шаг 1) Создайте данные

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

import numpy as npx_input = np.random.sample((1,2))print(x_input)

[[0,8835775 0,23766977]]

Шаг 2) Создайте заполнитель

Как и в предыдущем примере, мы создаем заполнитель с именем X. Нам нужно явно указать форму тензора. В случае, если мы загрузим массив только с двумя значениями. Мы можем записать форму как shape = [1,2]

# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Шаг 3) Определите метод набора данных

Затем нам нужно определить набор данных, в котором мы можем заполнить значение заполнителя x. Нам нужно использовать метод tf.data.Dataset.from_tensor_slices

dataset = tf.data.Dataset.from_tensor_slices(x)

Шаг 4) Создайте конвейер

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

iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()

Шаг 5) Выполните операцию

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

with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]

Резюме

Значение TensorFlow: TensorFlow - самая известная библиотека глубокого обучения за последние годы. Практик, использующий TensorFlow, может построить любую структуру глубокого обучения, такую ​​как CNN, RNN или простую искусственную нейронную сеть.

TensorFlow в основном используется учеными, стартапами и крупными компаниями. Google использует TensorFlow почти во всех ежедневных продуктах Google, включая Gmail, Фото и поисковую систему Google.

Команда Google Brain разработала TensorFlow, чтобы заполнить пробел между исследователями и разработчиками продуктов. В 2015 году они сделали TensorFlow публичным; его популярность быстро растет. В настоящее время TensorFlow - это библиотека глубокого обучения с наибольшим количеством репозиториев на GitHub.

Практики используют Tensorflow, потому что его легко развернуть в любом масштабе. Он создан для работы в облаке или на мобильных устройствах, таких как iOS и Android.

Tensorflow работает в сеансе. Каждая сессия определяется графом с различными вычислениями. Простым примером может быть умножение на число. В Tensorflow требуется три шага:

  1. Определите переменную
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Определите вычисление
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Выполнить операцию
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Одна из распространенных практик в Tensorflow - создание конвейера для загрузки данных. Если вы выполните эти пять шагов, вы сможете загружать данные в TensorFLow.

  1. Создайте данные
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Создайте заполнитель
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Определите метод набора данных
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Создайте конвейер
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Запустить программу
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))