一、torch.diag的基本用法
import torch x = torch.tensor([1, 2, 3]) diag_matrix = torch.diag(x) print(diag_matrix)
torch.diag用於創建對角矩陣。如果傳入一個一維Tensor,則返回一個n × n的對角矩陣,其中n是x的長度。對角線上的元素由x的元素填充。
在上面的例子中,我們傳入了一個長度為3的Tensor [1, 2, 3],所以得到了一個3 × 3的對角矩陣,對角線上的元素為[1, 2, 3]。
二、torch.diag的高級用法
除了基本用法之外,torch.diag還可以作用在二維Tensor上,實現提取對角線或者插入一個對角矩陣。以下是一些示例。
1. 提取對角線
x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) diagonal = torch.diag(x) print(diagonal)
在這個例子中,我們傳入了一個3 × 3的Tensor,得到了對角線上的元素[1, 5, 9]。
2. 插入一個對角矩陣
x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([5, 6]) result = torch.diag_embed(y) + x print(result)
在這個例子中,我們首先定義了一個2 × 2的Tensor,然後定義了一個長度為2的Tensor [5, 6],最後使用torch.diag_embed插入一個2 × 2的對角矩陣生成一個新的Tensor,最終結果為:
tensor([[ 6, 2], [ 3, 10]])
三、使用torch.diag創建稀疏對角矩陣
我們可以使用torch.sparse.diag創建一個稀疏對角矩陣,即非對角線上的元素都是0。以下是一個例子。
import torch x = torch.tensor([1, 0, 2, 0, 3]) diag_matrix = torch.sparse.diag(x) print(diag_matrix)
在這個例子中,我們傳入了一個長度為5的Tensor [1, 0, 2, 0, 3],得到了一個5 × 5的稀疏對角矩陣,對角線上的元素為[1, 0, 2, 0, 3]。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301494.html