Скаляры: просто один номер. Например, температура, которая обозначается одним числом.
Векторы: множество номеров. Числа расположены по порядку, и мы можем определить каждый индивидуальный номер по его индексу в этом порядке. Мы можем подумать о векторах в качестве идентификации точек в пространстве, причем каждый элемент дает координату вдоль другой оси. Проще говоря, вектор – это стрелка, представляющая количество, которое имеет величину, так и направление, в котором длина стрелки представляет величину, а ориентация говорит вам направление. Например ветер, который имеет направление и величину.
Матрицы: Матрица – это 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”