Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Базові Операції: Лінійна Алгебра | Тензори
Вступ до TensorFlow

bookБазові Операції: Лінійна Алгебра

Операції лінійної алгебри

TensorFlow надає набір функцій для операцій лінійної алгебри, що спрощує виконання матричних операцій.

Множення матриць

Коротке нагадування про принцип роботи множення матриць.

Існує два еквівалентних способи множення матриць:

  • Функція tf.matmul();
  • Використання оператора @.
1234567891011121314
import tensorflow as tf # Create two matrices matrix1 = tf.constant([[1, 2], [3, 4], [2, 1]]) matrix2 = tf.constant([[2, 0, 2, 5], [2, 2, 1, 3]]) # Multiply the matrices product1 = tf.matmul(matrix1, matrix2) product2 = matrix1 @ matrix2 # Display tensors print(product1) print('-' * 50) print(product2)
copy
Note
Примітка

Множення матриць розміром 3x2 та 2x4 дає матрицю розміром 3x4.

Інверсія матриці

Отримати обернену матрицю можна за допомогою функції tf.linalg.inv(). Додатково перевіримо фундаментальну властивість оберненої матриці.

123456789101112131415
import tensorflow as tf # Create 2x2 matrix matrix = tf.constant([[1., 2.], [3., 4.]]) # Compute the inverse of a matrix inverse_mat = tf.linalg.inv(matrix) # Check the result identity = matrix @ inverse_mat # Display tensors print(inverse_mat) print('-' * 50) print(identity)
copy
Note
Примітка

Множення матриці на її обернену має дати одиничну матрицю, яка містить одиниці на головній діагоналі та нулі в інших місцях. Крім того, модуль tf.linalg надає широкий спектр функцій для лінійної алгебри. Для отримання додаткової інформації або виконання більш складних операцій рекомендується звернутися до офіційної документації.

Транспонування

Транспоновану матрицю можна отримати за допомогою функції tf.transpose().

123456789101112
import tensorflow as tf # Create a matrix 3x2 matrix = tf.constant([[1, 2], [3, 4], [2, 1]]) # Get the transpose of a matrix transposed = tf.transpose(matrix) # Display tensors print(matrix) print('-' * 40) print(transposed)
copy

Скалярний добуток

Скалярний добуток можна отримати за допомогою функції tf.tensordot(). Встановлюючи аргумент axes, можна обрати, по яких осях обчислювати скалярний добуток. Наприклад, для двох векторів, встановивши axes=1, ви отримаєте класичний скалярний добуток між векторами. Але якщо встановити axes=0, буде отримано розширену матрицю по осі 0:

1234567891011121314
import tensorflow as tf # Create two vectors matrix1 = tf.constant([1, 2, 3, 4]) matrix2 = tf.constant([2, 0, 2, 5]) # Compute the dot product of two tensors dot_product_axes1 = tf.tensordot(matrix1, matrix2, axes=1) dot_product_axes0 = tf.tensordot(matrix1, matrix2, axes=0) # Display tensors print(dot_product_axes1) print('-' * 40) print(dot_product_axes0)
copy
Note
Примітка

Якщо взяти дві матриці з відповідними розмірами (NxM @ MxK, де NxM — розміри першої матриці, а MxK — другої), і обчислити скалярний добуток по axes=1, це фактично виконує множення матриць.

Завдання

Swipe to start coding

Теоретичні відомості

Систему лінійних рівнянь можна подати у матричній формі за допомогою рівняння:

AX = B

Де:

  • A — матриця коефіцієнтів;
  • X — стовпчикова матриця змінних;
  • B — стовпчикова матриця, що містить значення з правої частини рівнянь.

Розв'язок цієї системи можна знайти за формулою:

X = A^-1 B

Де A^-1 — обернена матриця до A.

Мета

Для заданої системи лінійних рівнянь використати TensorFlow для її розв'язання. Дано таку систему лінійних рівнянь:

  1. 2x + 3y - z = 1.
  2. 4x + y + 2z = 2.
  3. -x + 2y + 3z = 3.
Dot Product
  1. Подати систему рівнянь у матричній формі (розділити на матриці A та B).
  2. За допомогою TensorFlow знайти обернену матрицю A.
  3. Перемножити обернену матрицю A на матрицю B, щоб знайти матрицю розв'язків X, яка містить значення x, y та z.

Примітка

Операції зрізу (slicing) у TensorFlow працюють подібно до NumPy. Тому X[:, 0] поверне всі елементи зі стовпця з індексом 0. До операцій зрізу ми повернемося пізніше у курсі.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 9
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain the difference between tf.matmul() and the @ operator?

How do I interpret the output of the matrix inversion example?

Can you show more examples of using tf.tensordot() with different axes?

close

Awesome!

Completion rate improved to 5.56

bookБазові Операції: Лінійна Алгебра

Свайпніть щоб показати меню

Операції лінійної алгебри

TensorFlow надає набір функцій для операцій лінійної алгебри, що спрощує виконання матричних операцій.

Множення матриць

Коротке нагадування про принцип роботи множення матриць.

Існує два еквівалентних способи множення матриць:

  • Функція tf.matmul();
  • Використання оператора @.
1234567891011121314
import tensorflow as tf # Create two matrices matrix1 = tf.constant([[1, 2], [3, 4], [2, 1]]) matrix2 = tf.constant([[2, 0, 2, 5], [2, 2, 1, 3]]) # Multiply the matrices product1 = tf.matmul(matrix1, matrix2) product2 = matrix1 @ matrix2 # Display tensors print(product1) print('-' * 50) print(product2)
copy
Note
Примітка

Множення матриць розміром 3x2 та 2x4 дає матрицю розміром 3x4.

Інверсія матриці

Отримати обернену матрицю можна за допомогою функції tf.linalg.inv(). Додатково перевіримо фундаментальну властивість оберненої матриці.

123456789101112131415
import tensorflow as tf # Create 2x2 matrix matrix = tf.constant([[1., 2.], [3., 4.]]) # Compute the inverse of a matrix inverse_mat = tf.linalg.inv(matrix) # Check the result identity = matrix @ inverse_mat # Display tensors print(inverse_mat) print('-' * 50) print(identity)
copy
Note
Примітка

Множення матриці на її обернену має дати одиничну матрицю, яка містить одиниці на головній діагоналі та нулі в інших місцях. Крім того, модуль tf.linalg надає широкий спектр функцій для лінійної алгебри. Для отримання додаткової інформації або виконання більш складних операцій рекомендується звернутися до офіційної документації.

Транспонування

Транспоновану матрицю можна отримати за допомогою функції tf.transpose().

123456789101112
import tensorflow as tf # Create a matrix 3x2 matrix = tf.constant([[1, 2], [3, 4], [2, 1]]) # Get the transpose of a matrix transposed = tf.transpose(matrix) # Display tensors print(matrix) print('-' * 40) print(transposed)
copy

Скалярний добуток

Скалярний добуток можна отримати за допомогою функції tf.tensordot(). Встановлюючи аргумент axes, можна обрати, по яких осях обчислювати скалярний добуток. Наприклад, для двох векторів, встановивши axes=1, ви отримаєте класичний скалярний добуток між векторами. Але якщо встановити axes=0, буде отримано розширену матрицю по осі 0:

1234567891011121314
import tensorflow as tf # Create two vectors matrix1 = tf.constant([1, 2, 3, 4]) matrix2 = tf.constant([2, 0, 2, 5]) # Compute the dot product of two tensors dot_product_axes1 = tf.tensordot(matrix1, matrix2, axes=1) dot_product_axes0 = tf.tensordot(matrix1, matrix2, axes=0) # Display tensors print(dot_product_axes1) print('-' * 40) print(dot_product_axes0)
copy
Note
Примітка

Якщо взяти дві матриці з відповідними розмірами (NxM @ MxK, де NxM — розміри першої матриці, а MxK — другої), і обчислити скалярний добуток по axes=1, це фактично виконує множення матриць.

Завдання

Swipe to start coding

Теоретичні відомості

Систему лінійних рівнянь можна подати у матричній формі за допомогою рівняння:

AX = B

Де:

  • A — матриця коефіцієнтів;
  • X — стовпчикова матриця змінних;
  • B — стовпчикова матриця, що містить значення з правої частини рівнянь.

Розв'язок цієї системи можна знайти за формулою:

X = A^-1 B

Де A^-1 — обернена матриця до A.

Мета

Для заданої системи лінійних рівнянь використати TensorFlow для її розв'язання. Дано таку систему лінійних рівнянь:

  1. 2x + 3y - z = 1.
  2. 4x + y + 2z = 2.
  3. -x + 2y + 3z = 3.
Dot Product
  1. Подати систему рівнянь у матричній формі (розділити на матриці A та B).
  2. За допомогою TensorFlow знайти обернену матрицю A.
  3. Перемножити обернену матрицю A на матрицю B, щоб знайти матрицю розв'язків X, яка містить значення x, y та z.

Примітка

Операції зрізу (slicing) у TensorFlow працюють подібно до NumPy. Тому X[:, 0] поверне всі елементи зі стовпця з індексом 0. До операцій зрізу ми повернемося пізніше у курсі.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 9
single

single

some-alt