tf.linalg.band_part
Копирует тензор, устанавливая в ноль все элементы за пределами центральной полосы каждой внутренней матрицы.
tf.linalg.band_part(
input: Annotated[Any, TV_MatrixBandPart_T],
num_lower: Annotated[Any, TV_MatrixBandPart_Tindex],
num_upper: Annotated[Any, TV_MatrixBandPart_Tindex],
name=None
) -> Annotated[Any, TV_MatrixBandPart_T]
Часть band вычисляется следующим образом: предположим, что input имеет k размерностей [I, J, K, ..., M, N], тогда результатом будет тензор той же формы, где
band[i, j, k, ..., m, n] = in_band(m, n) * input[i, j, k, ..., m, n].
Функция-индикатор
in_band(m, n) = (num_lower < 0 || (m-n) <= num_lower)) && (num_upper < 0 || (n-m) <= num_upper).
Например:
# if 'input' is [[ 0, 1, 2, 3]
# [-1, 0, 1, 2]
# [-2, -1, 0, 1]
# [-3, -2, -1, 0]],
tf.linalg.band_part(input, 1, -1) ==> [[ 0, 1, 2, 3]
[-1, 0, 1, 2]
[ 0, -1, 0, 1]
[ 0, 0, -1, 0]],
tf.linalg.band_part(input, 2, 1) ==> [[ 0, 1, 0, 0]
[-1, 0, 1, 0]
[-2, -1, 0, 1]
[ 0, -2, -1, 0]]
Полезные частные случаи:
tf.linalg.band_part(input, 0, -1) ==> Upper triangular part. tf.linalg.band_part(input, -1, 0) ==> Lower triangular part. tf.linalg.band_part(input, 0, 0) ==> Diagonal.
| Аргументы | |
|---|---|
input | Тензор Tensor. Ранг k. |
num_lower | Тензор Tensor. Должен иметь один из следующих типов: int32, int64. Тензор ранга 0. Количество сохраняемых поддиагоналей. Если значение отрицательное, сохраняется весь нижний треугольник. |
num_upper | Тензор Tensor. Должен иметь тот же тип, что и num_lower. Тензор ранга 0. Количество сохраняемых наддиагоналей. Если значение отрицательное, сохраняется весь верхний треугольник. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Тензор Tensor. Имеет тот же тип, что и input. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/linalg/band_part