Рубрики
Без рубрики

Скаляры, векторы, матрицы и тензоры с Tensorflow 2.0

Скаляры: это всего лишь одно число. Например, температура, которая обозначается одним числом. VEC … Теги с обучением машины, Python, открытым исходным кодом, глубоким обучением.

Скаляры: просто один номер. Например, температура, которая обозначается одним числом.

Векторы: множество номеров. Числа расположены по порядку, и мы можем определить каждый индивидуальный номер по его индексу в этом порядке. Мы можем подумать о векторах в качестве идентификации точек в пространстве, причем каждый элемент дает координату вдоль другой оси. Проще говоря, вектор – это стрелка, представляющая количество, которое имеет величину, так и направление, в котором длина стрелки представляет величину, а ориентация говорит вам направление. Например ветер, который имеет направление и величину.

Матрицы: Матрица – это 2D-массив чисел, поэтому каждый элемент идентифицируется двумя показателями вместо всего одного. Если реальная оценка матрицы А имеет высоту м и ширина n Тогда мы говорим, что a в r ^ (m x n). Мы определяем элементы матрицы как A_ (M, N), где м представляет строку и n представляет колонку.

Тензоры: В общем случае множество чисел, расположенных на регулярной сетке с переменным числом осей, это известно как тензор. Мы определяем элементы тензора А При координатах ( i, j, k ) записью a_ (i, j, k). Но чтобы по-настоящему понять тензоров, нам нужно расширить способ, которым мы думаем о векторах как о векторах как только стрелки с величиной и направлением. Помните, что вектор можно представить тремя компонентами, а именно компонентами X, Y и Z (базовые векторы). Если у вас есть ручка и бумага, давайте сделаем небольшой эксперимент, поместите ручку вертикально на бумагу и наклоняли ее по какому углами, и теперь светит свет от топ, так что тень ручки падает на бумагу, эта тень, Представляет X компонент вектора «пера» и высота из бумаги до кончика ручки является компонент Y. Теперь давайте возьмем эти компоненты для описания тензоров, представьте себе, вы в Индиане Джонс или охотник на сокровище, и вы попали в кубик, и есть три стрелки, летающие к вам с трех граней (для представляют собой ось X, Y, Z) Куб 😬, я знаю, что это будет последнее, что вы бы подумали в такой ситуации, но вы можете подумать о тех трех стрелках, как векторы, указывающие на вас с трех граней куба, и вы можете представлять эти векторы (стрелки) в X Компоненты Y и Z, теперь это тензор на 2 ранга (матрица) с 9 компонентами. Помните, что это очень простое объяснение тензоров. Ниже приведено представление тензора:

Мы можем добавить матрицы друг другу, пока они имеют одинаковую форму, просто добавляя соответствующие элементы:

C + B где (я, j) + b_ (i, j)

Если у вас есть проблемы с просмотром уравнений в браузере, вы также можете прочитать главу в Jupyter NBViewer в целом. Если нет, давайте продолжим.

В Tensorflow A:

  • Ранг 0. Tensor – это скаляр
  • Ранг 1 тензор – это вектор
  • Ранг 2 Tensor – это матрица
  • Tensor 3-тензор
  • Rank N Tensor N-Tensor
# let's create a ones 3x3 rank 2 tensor
rank_2_tensor_A = tf.ones([3, 3], name='MatrixA')
print("3x3 Rank 2 Tensor A: \n{}\n".format(rank_2_tensor_A))

# let's manually create a 3x3 rank two tensor and specify the data type as float
rank_2_tensor_B = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]], name='MatrixB', dtype=tf.float32)
print("3x3 Rank 2 Tensor B: \n{}\n".format(rank_2_tensor_B))

# addition of the two tensors
rank_2_tensor_C = tf.add(rank_2_tensor_A, rank_2_tensor_B, name='MatrixC')
print("Rank 2 Tensor C with shape={} and elements: \n{}".format(rank_2_tensor_C.shape, rank_2_tensor_C))

3x3 Rank 2 Tensor A:
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

3x3 Rank 2 Tensor B:
[[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]

Rank 2 Tensor C with shape=(3, 3) and elements:
[[ 2.  3.  4.]
 [ 5.  6.  7.]
 [ 8.  9. 10.]]
# Let's see what happens if the shapes are not the same
two_by_three = tf.ones([2, 3])
try:
    incompatible_tensor = tf.add(two_by_three, rank_2_tensor_B)
except:
    print("""Incompatible shapes to add with two_by_three of shape {0} and 3x3 Rank 2 Tensor B of shape {1}
    """.format(two_by_three.shape, rank_2_tensor_B.shape))

Incompatible shapes to add with two_by_three of shape (2, 3) and 3x3 Rank 2 Tensor B of shape (3, 3)

Мы также можем добавить скаляр на матрицу или умножить матрицу скалярным, просто выполняя эту операцию на каждом элементе матрицы:

Д.б. + C где. B_ (i, j) + c

# Create scalar a, c and Matrix B
rank_0_tensor_a = tf.constant(2, name="scalar_a", dtype=tf.float32)
rank_2_tensor_B = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]], name='MatrixB', dtype=tf.float32)
rank_0_tensor_c = tf.constant(3, name="scalar_c", dtype=tf.float32)

# multiplying aB
multiply_scalar = tf.multiply(rank_0_tensor_a, rank_2_tensor_B)
# adding aB + c
rank_2_tensor_D = tf.add(multiply_scalar, rank_0_tensor_c, name="MatrixD")

print("""Original Rank 2 Tensor B: \n{0} \n\nScalar a: {1}
Rank 2 Tensor for aB: \n{2} \n\nScalar c: {3} \nRank 2 Tensor D = aB + c: \n{4}
""".format(rank_2_tensor_B, rank_0_tensor_a, multiply_scalar, rank_0_tensor_c, rank_2_tensor_D))

Original Rank 2 Tensor B:
[[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]

Scalar a: 2.0
Rank 2 Tensor for aB:
[[ 2.  4.  6.]
 [ 8. 10. 12.]
 [14. 16. 18.]]

Scalar c: 3.0
Rank 2 Tensor D = aB + c:
[[ 5.  7.  9.]
 [11. 13. 15.]
 [17. 19. 21.]]

Одной из важных операций на матрицах является транспонировать Отказ Транспоминация матрицы – это зеркальное изображение матрицы на диагональной линии, называемой Главная диагональ Отказ Обозначим транспозью матрицы А как ^ т и определяется как таковой: а ^ т ( Я, (Я, я)

# Creating a Matrix E
rank_2_tensor_E = tf.constant([[1, 2, 3], [4, 5, 6]])
# Transposing Matrix E
transpose_E = tf.transpose(rank_2_tensor_E, name="transposeE")

print("""Rank 2 Tensor E of shape: {0} and elements: \n{1}\n
Transpose of Rank 2 Tensor E of shape: {2} and elements: \n{3}""".format(rank_2_tensor_E.shape, rank_2_tensor_E, transpose_E.shape, transpose_E))

Rank 2 Tensor E of shape: (2, 3) and elements:
[[1 2 3]
 [4 5 6]]

Transpose of Rank 2 Tensor E of shape: (3, 2) and elements:
[[1 4]
 [2 5]
 [3 6]]

В глубоком обучении мы допускаем добавление матрицы и вектора, давая еще одну матрицу, где C_ (I, (i, j) + b_ (j). Другими словами, вектор B добавляется к каждой строке матрицы. Это неявное копирование B Для многих мест называется вещание

# Creating a vector b
rank_1_tensor_b = tf.constant([[4.], [5.], [6.]])
# Broadcasting a vector b to a matrix A such that it yields a matrix F = A + b
rank_2_tensor_F = tf.add(rank_2_tensor_A, rank_1_tensor_b, name="broadcastF")

print("""Rank 2 tensor A: \n{0}\n \nRank 1 Tensor b: \n{1}
\nRank 2 tensor F = A + b:\n{2}""".format(rank_2_tensor_A, rank_1_tensor_b, rank_2_tensor_F))

Rank 2 tensor A:
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

Rank 1 Tensor b:
[[4.]
 [5.]
 [6.]]

Rank 2 tensor F = A + b:
[[5. 5. 5.]
 [6. 6. 6.]
 [7. 7. 7.]]

Это раздел двух главы на линейной алгебре с Tensorflow 2.0 книги Глубокое обучение с Tensorflow 2.0 Отказ

Вы можете прочитать этот раздел и следующие темы:

02.01 – Скаляры, векторы, матрицы и тензоры 02.02 – Умножение матриц и векторов 02.03 – Линейные и обратные матрицы 02.04 – Линейная зависимость и промежуток 02.05 – Нормы 02.06 – Специальные виды матриц и векторов 02.07 – Eigendecomposition 02.08 – Особое значение Разложение ценностей 02.09 – Мур -Пунроза псевдоинверсию 02.10 – оператор трассировки 02.11 – определитель 02.12 – пример: анализ основных компонентов

на Глубокое обучение с TF 2.0: 02.00- линейная алгебра . Вы можете получить код для этой статьи и остальной части главы здесь Отказ Ссылки на ноутбук в Google Colab и Jupyter Binder находятся в конце ноутбук Отказ

Оригинал: “https://dev.to/mmithrakumar/scalars-vectors-matrices-and-tensors-with-tensorflow-2-0-1f66”