Что такое ТензорФлоу? Как это работает? Введение и архитектура

by moiseevrus

Что такое ТензорФлоу?

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

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

Пример TensorFlow

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

Пример TensorFlow

Пример TensorFlow

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

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

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

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

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

История TensorFlow

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

  • Gmail
  • Фото
  • поисковая система гугл

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

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

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

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

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

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

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

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

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

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

Где может работать Tensorflow?

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

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

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

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

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

Модель можно обучать и использовать как на GPU, так и на CPU. Графические процессоры изначально были разработаны для видеоигр. В конце 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 np
import tensorflow as tf

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

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

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

Пример TensorFlow

Пример 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 таким же образом. Х_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 для 1×4, 2×5 и 3×6.

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

Вот шаги для создания конвейера TensorFlow:

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

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

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

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

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

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

# using a placeholder
x = 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 data
    sess.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, Photo и Google Search Engine.
  • Команда 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 np
x_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))

Статья является переводом guru99-com

You may also like

Leave a Comment