Функция linalg.diag
Функция linalg.diag создает диагональный тензор
из переданных значений или извлекает диагональные
элементы из входной матрицы. Первым параметром
функция принимает тензор или список. Вторым
параметром можно передать смещение диагонали
k. Третьим параметром задается выравнивание
align, которое определяет поведение функции
для многомерных тензоров.
Синтаксис
tf.linalg.diag(diagonal, [k], [align])
Пример
Давайте создадим квадратную матрицу из вектора
значений 1, 2, 3:
import tensorflow as tf
t = tf.constant([1, 2, 3])
res = tf.linalg.diag(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[1 0 0]
[0 2 0]
[0 0 3]], shape=(3, 3), dtype=int32)
Пример
Давайте извлечем диагональные элементы из двумерной матрицы:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = tf.linalg.diag(t)
print(res)
Результат выполнения кода:
tf.Tensor([1 5 9], shape=(3,), dtype=int32)
Пример
Давайте создадим матрицу со смещенной диагональю,
передав параметр k равным 1:
import tensorflow as tf
t = tf.constant([1, 2, 3])
res = tf.linalg.diag(t, k=1)
print(res)
Результат выполнения кода:
tf.Tensor(
[[0 1 0 0]
[0 0 2 0]
[0 0 0 3]
[0 0 0 0]], shape=(4, 4), dtype=int32)
Пример
Давайте извлечем диагональ со смещением
1 из матрицы:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = tf.linalg.diag(t, k=1)
print(res)
Результат выполнения кода:
tf.Tensor([2 6], shape=(2,), dtype=int32)