torch.tril 和 torch.triu
`torch.tril` 和 `torch.triu` 是 PyTorch 中用于处理矩阵的下三角和上三角部分的两个函数。它们的主要区别在于它们保留和填充矩阵的不同部分。
1. torch.tril (Lower Triangular):
- 功能: 保留矩阵的下三角部分,包括主对角线,而将上三角部分填充为零。
- 用法: `torch.tril(input, diagonal=0, out=None)`
- 参数 :
- `input`: 输入的张量(矩阵)。
- `diagonal`: 指定要保留的对角线。`diagonal=0` 表示主对角线,`diagonal=-1` 表示主对角线以下的一条对角线,依此类推。
- `out`: 可选的输出张量。
- 示例:
python
import torch
matrix = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
lower_triangular = torch.tril(matrix)
print(lower_triangular)
# 输出:
# tensor([[1, 0, 0],
# [4, 5, 0],
# [7, 8, 9]])
2. torch.triu(Upper Triangular)
- 功能: 保留矩阵的上三角部分,包括主对角线,而将下三角部分填充为零。
- 用法: `torch.triu(input, diagonal=0, out=None)`
- 参数 :
- `input`: 输入的张量(矩阵)。
- `diagonal`: 指定要保留的对角线。`diagonal=0` 表示主对角线,`diagonal=1` 表示主对角线以上的一条对角线,依此类推。
- `out`: 可选的输出张量。
- 示例:
python
import torch
matrix = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
upper_triangular = torch.triu(matrix)
print(upper_triangular)
# 输出:
# tensor([[1, 2, 3],
# [0, 5, 6],
# [0, 0, 9]])
总结:
- `torch.tril` 用于获取矩阵的下三角部分,并将上三角部分置零。
- `torch.triu` 用于获取矩阵的上三角部分,并将下三角部分置零。
这两个函数在矩阵操作和线性代数计算中非常有用,尤其是在需要分解矩阵或进行特定形式的矩阵运算时。