fbpx

TensorFlow туториал. Часть 1: тензоры и векторы

Tensorflow tutorial

TensorFlow — это ML-framework от Google, который предназначен для проектирования, создания и изучения моделей глубокого обучения. Глубокое обучение — это область машинного обучения, алгоритмы в которой были вдохновлены структурой и работой мозга. Вы можете использовать TensorFlow, чтобы производить численные вычисления. Само по себе это не кажется специфичным, однако эти вычисления производятся с помощью data-flow графов. В этих графах вершины представляют собой математические операции, в то время как ребра представляют собой данные, которые обычно представляются в виде многомерных массивов или тензоров, которые сообщаются между этими ребрами.

Поняли? Название «Tensor Flow» происходит от вычислений, которые нейросеть производит с многомерными данными и тензорами! Буквально — поток тензоров. На данный момент это все, что нужно знать о тензорах, но мы вернемся к ним чуть позже.

TensorFlow туториал познакомит вас с глубоким обучением в интерактивной форме:

  • Сначала вы узнаете больше о тензорах;
  • Затем, туторил плавно расскажет о там, как установить TensorFlow;
  • Далее вы узнаете об основах Tesorflow: как произвести свои первые простейшие вычисления;
  • Следующий этап — настоящая задача на реальных данных: данные по Бельгийскому дорожным знаком и обработка с помощью статистики;
  • Научитесь размечать данные таким образом, чтобы “скормить” эти данные нейросети;
  • Наконец, разработаете свою модель нейронной сети — слой за слоем;
  • Как только архитектура будет готова, вы сможете тренировать сеть интерактивно, а также производить оценку эффективности, использую тестовую выборку;
  • Последнее — вы получите указания, как можно улучшить свою модель и как можно дальше работать с TensorFlow.

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

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

Плоские векторы

Перед тем, как мы перейдем к плоским векторам, неплохо бы вспомнить о том, что такое вектор. Вектор — это особый вид матрицы, прямоугольный массив с числами. Так как векторы — это упорядоченный набор чисел, то они часто представляются в виде столбцов матриц. Другими словами, вектор — скалярная величина, которой дали направление.

Пример скаляра — “5 метров” или “60 м/с”, тогда как вектор — “5 метров на север” или “60 м/с на восток”.

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

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

tensorflow туториал - тензоры и векторы

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

Так что же с плоскими векторами?

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

Чтобы понять, что это значит, рассмотрим пример: пусть есть вектор 2 X 1. Это означает, что вектор принадлежит множеству действительных чисел, которые объединены в пары. Или, иначе говоря, элемент двумерного пространства. В таких случаях вы можете задавать вектор на координатной плоскости, как стрелки или лучи.

Работая на координатной плоскости, вы можете узнать х координату конца луча с началом в (0, 0), посмотрев на первую строчку вектора, а у координату — на вторую.

Замечание: если вы рассматриваете вектор размера 3 X 1, то вы работаете трехмерном пространстве. Здесь вы можете представить вектор как стрелку в трехмерном пространстве, которая обычно задается тремя осями х, у и z.

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

Единичные векторы — векторы длины 1. Двумерные или трехмерные вектора хорошо раскладываются в сумму ортогональных единичных векторов, таких как оси координат.

Тензоры

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

И так же как вы представляли скаляр одним числом, а трехмерный вектор как тройку чисел, тензор представляется в виде массива 3R чисел в трехмерном пространстве.

R в этой записи отвечает за ранг тензора: в трехмерном пространстве тензор ранга 2 может быть представлен девятью числами. В N-мерном скаляр требует только одного числа, векторы требуют N чисел, а тензоры требуют N^R чисел. Этим объясняется, почему скаляры часто называют тензорами размера 0: у них нет направления, и они могут быть представлены только одним числом.

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

Можно достаточно легко различать векторы, скаляры и тензоры: скаляры представляются одним числом, векторы — последовательностью чисел, тензоры — массивом чисел.

Что делает тензоры такими особенными, так это комбинация компонентов и базисных векторов: все операция производится над тензорами сохраняют отношения между базисными векторами и компонентами такими же.

В следующей частиустановка TensorFlow и первые шаги.


Интересные статьи: