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

Содержание

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

Тензор — это обобщенная матричная форма, если вы математик или физик, вы, вероятно, очень хорошо знаете о матрице. Кроме того, вы, возможно, слышали такие термины, как скаляры и векторы.

Как известно, матрица состоит из строк и столбцов, например, двумерная матрица содержит массив чисел.

[ 3, 5,7 ]
[ 4, 6, 2]

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

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

Во-первых, позвольте мне объяснить определение матрицы; Из приведенного выше примера можно сказать, что матрица — это набор элементов, расположенных в двумерном массиве.

Здесь поймите эти два термина:

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

Создание массивов и матриц в Python, массивы представлены списком:

array = [ 3, 5, 7, 4, 6, 2]

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

И какова форма этого массива? Форма массива относится к количеству элементов в каждом измерении, поэтому этот массив имеет одномерное измерение, содержащее 6 элементов, поэтому его форма равна(6).

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

matrix = [
  [ 3, 5,7 ],
  [ 4, 6, 2]
]

Приведенная выше матрица содержит два списка: [3, 5, 7] и второй [4, 6, 2].

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

Она называется двумерной матрицей, потому что в ней есть две горизонтальные линии элементов и три вертикальные линии элементов. И какова форма этой матрицы? Здесь форма — это количество строк и столбцов.

Итак, он имеет 2-мерность, как видите, эта матрица содержит две строки, каждая из которых содержит три элемента, и три столбца, каждый из которых содержит два элемента. Итак, его форма —(2,3), то есть 2 строки и 3 столбца.

Вы можете создать трехмерную матрицу, как показано ниже.

matrix = [
  [ 3, 5,7 ],
  [ 4, 6, 2],
  [1, 6, 5 ]
]

Вышеуказанное представляет собой трехмерную матрицу, содержащую 3 строки и 3 столбца, поэтому ее форма —(3,3).

Возвращаясь к понятию тензора, его определение таково: «тензор представляет собой многомерный массив элементов», что означает, что он аналогичен матрице. Тем не менее, вы можете работать с более высокими измерениями, используя тензор, даже с 4-D, 5-D или nD.

Итак, здесь простое определение тензора звучит так: «Тензор — это совокупность массивов, организованных в n-мерностях»:

  • Коллекция массивов: Тензор состоит из одного или нескольких массивов (называемых списками в Python). Эти массивы (списки) могут быть числами, символами или другими форматами данных.
  • Организован в N-размерах. Существенной характеристикой тензора является его способность иметь любое количество измерений (n-размерностей). Используя эту концепцию, тензоры могут представлять строки данных (1-D) и таблицы данных, такие как матрицы (2-D), но они также могут представлять более высокие данные, такие как кубы данных (3-D) или даже более высокие измерения.

Итак, если вы программист на Python и знаете только о списках в Python, которые представляют собой массивы, вы можете сказать, что тензор — это набор списков (вложенных списков), и каждый список соответствует одному измерению. Больше списков означает больше измерений.

Понимание размеров и формы тензора

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

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

3  // this is the single number, or any single number is called Rank 0 Tensor

Одномерный массив называется тензором (вектором) ранга 1, для этого тензора требуется один индекс.

[2,5,7]

Двумерный массив называется тензором(матрицей) 2-го ранга, этот тензор требует двух индексов.

[
  [ 3, 5,7 ],
  [ 4, 6, 2]
]

Трехмерный массив называется тензором 3-го ранга, этот тензор требует трех индексов.

[
  [ 3, 5,7 ],
  [ 4, 6, 2],
  [1, 6, 5 ]
]

N-мерный массив называется тензором ранга N, этот тензор требует n-индексов, также называемых ND-тензором.

Форма тензора

Как вы уже знаете, форма — это количество элементов по каждому измерению. В тензорном потоке форма представлена с помощью кортежа «()». Например, посмотрите на примеры ниже, чтобы определить форму тензоров.

Возьмите одно число, например, как показано ниже.

8

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

Возьмите список чисел, как показано ниже.

[2,5,7]

Этот список чисел называется тензором 1-го ранга, вектором, поэтому он имеет форму(3, ), что означает, что он содержит 3 элемента в одном измерении.

Возьмите вложенный список чисел, как показано ниже.

[
  [ 3, 5,7 ],
  [ 4, 6, 2]
]

Вложенный выше список называется тензором ранга 2, матрицей, поэтому он имеет форму (2, 3), то есть имеет 2 строки и 3 столбца.

Для тензоров более высокого ранга форма будет содержать больше элементов. Например, тензор ранга 3 с формой (2, 3, 4) имеет 2 элемента в первом измерении, 3 — во втором и 4 — в третьем.

Создание тензора

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

Первая функция — это функция tf.constant() в TensorFlow, синтаксис этой функции приведен ниже.

tf.constant(value, dtype=None, shape=None, name='const')

Прежде чем объяснять параметр функции tf.constant(), я хочу показать вам, как создать тензор, а затем объяснить каждый параметр один за другим.

Чтобы создать тензор в tensorflow, импортируйте библиотеку TensorFlow и присвойте ей альтернативное имя tf.

import tensorflow as tf

Получите доступ к функции Constant() TensorFlow с помощью оператора точки (.) и укажите единственное значение 20 в функции Constant(), как показано ниже.

scalar = tf.constant(20)

Используйте функцию Python print() и напечатайте значение скаляра, как показано ниже.

print(scalar)

С использованием функции tf.constant()

Позвольте мне объяснить, что в tf.constant(20) передается одно число, и это единственное число является скалярным, поэтому оно не имеет никаких размеров или формы.

Теперь посмотрите на выходные данные: tf.Tensor(20, shape=(), dtype=int32), первое значение в этих выходных данных — 20, то есть одно число; второй — это форма, равная пустому кортежу(), а третий — это dtype, который является типом данных этого числа, здесь тип — int32, который представляет целое число.

Значение, форма и dtype — это свойства тензора, которые выводятся автоматически на основе переданного значения. Вы можете настроить это свойство, передавая значение функции tf.constant().

Например, передайте значение 10,5 и задайте форму в виде пустого кортежа(), потому что это одно число, dtype как float32, как показано ниже.

float_scalar = tf.constant(10.5, shape=(), dtype=tf.float32)

print(float_scalar)

С использованием функции tf.constant

В выводе вы можете видеть, что тензор float_scalar имеет значение 10,5, форма представляет собой пустой кортеж, а тип данных этого значения — float32.

Далее давайте создадим вектор или тензор ранга 1, для этого передайте список значений [3, 5, 6, 2] в функцию tf.constant().

vector = tf.constant([3, 5, 6, 2])

print(vector)

Создание тензора ранга 1

Как видите, значения этого вектора — [3, 5, 6, 2], он имеет форму (4,), что означает, что он содержит 4 элемента, а тип dtype — int32, какой тип данных каждого элемента является целым числом.

Вы можете получить доступ к каждому свойству индивидуально, например к вектору. shape и .dtype.

print('Shape of the vector', vector.shape)

print('Data type of elements', vector.dtype)

С использованием функции tf.constant()

Из вывода вы можете распечатать или получить доступ к значению свойства отдельно.

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

print(vector[1])

Доступ к значению по индексу

Вы можете видеть, что элемент 5 имеет индекс 1, поэтому здесь вы указали значение индекса с помощью скобок [], и вы можете получить доступ к любому элементу через индекс. Как я уже говорил, размерность тензора — это его ранг.

Итак, tensorflow предоставляет функцию tf.rank(); с помощью этой функции можно найти ранг данного тензора. Например, чтобы найти ранг вышеуказанного вектора, используйте приведенный ниже код.

print(tf.rank(vector))

С использованием функции tf.rank()

Посмотрите на tf.rank() и верните ранг вектора как 1, что означает, что он имеет одно измерение.

Давайте создадим тензор ранга 2 (называемый матричным тензором). Например, у вас есть такой вложенный список [[3, 2, 6], [8, 2, 6]] и вы передаете этот вложенный список в функцию tf.constant().

matrix_tensor = tf.constant([ [3, 2, 6], [8, 2, 6] ])

print(matrix_tensor)

С использованием функции tf.constant()

Вы можете видеть, что выше приведен матричный тензор, который содержит значения [[3, 2, 6], [8, 2, 6]], имеет форму(2, 3), а тип dtype — int32.

Теперь давайте получим доступ к таким свойствам, как форма и dtype.

print('Shape of the matrix is', matrix_tensor.shape)

print('Data type of matrix elements are', matrix_tensor.dtype)

С использованием tf.shape и tf.dtype

Для доступа к элементу матричного тензора нужны два индекса. Например, давайте получим доступ к элементу с индексом [1][2], как показано в приведенном ниже коде.

print(matrix_tensor[1][2])

Доступ к элементу

Элемент с индексом [1][2] равен 6. В выводе вы можете видеть, что вы указали два значения индекса в отдельных скобках.

Также проверьте ранг этого матричного тензора; для этого используйте код ниже.

print(tf.rank(matrix_tensor))

Ранг матричного тензора

Как видите, ранг матричного тензора равен 2, что означает, что он имеет два измерения.

Наконец, создайте тензор ранга 3 большего размера; например, передайте вложенный список списка [[[3, 2, 6]], [[8, 2, 6]],[[1, 9, 3]] ] в функцию tf.constant(), как показано ниже.

rank_3_tensor = tf.constant([ [[3, 2, 6]], [[8, 2, 6]],[[1, 9 , 3]] ])

Проверьте форму и тип данных Rank_3_tensor, используя код ниже.

print('Shape of the rank_3_tensor is', rank_3_tensor.shape)

print('Data type of rank_3_tensor elements are', rank_3_tensor.dtype)

Доступ к свойствам тензора ранга 3

Форма тензора ранга 3 —(3, 1, 3), а тип d — int32.

Чтобы получить доступ к элементам этого тензора ранга 3, вам необходимо использовать три индекса, например, найдите или получите доступ к элементу с индексом [0][0][0], как показано ниже.

print(rank_3_tensor[0][0][0])

Доступ к элементу с индексом [0][0][0]

Элемент с индексом [0][0][0] равен 3; здесь в скобках указаны три индекса.

Снова проверьте ранг тензора ранга 3, используя код ниже.

print(tf.rank(rank_3_tensor))

Проверка размерности тензора ранга 3 в Tensorflow

Ранг тензора ранга 3 равен 3, который имеет 3 измерения, как вы можете видеть в выходных данных.

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

  • Помните, что когда вы создаете тензор в тензорном потоке с помощью tf.constant(), вы не можете изменить значение этого тензора после его создания, поскольку имя функции подразумевает, что вы используете его, когда не хотите менять значение. тензора на протяжении всего расчета.

Заключение

Вы узнали, как создать TensorFlow с помощью функции tf.constants(), как получается тензор и ранг.

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

Добавить комментарий