使用 PyTorch 张量将对角线屏蔽到特定值
Masking diagonal to a specific value with PyTorch tensors
如何用 torch 中的值填充对角线?在 numpy 中你可以这样做:
a = np.zeros((3, 3), int)
np.fill_diagonal(a, 5)
array([[5, 0, 0],
[0, 5, 0],
[0, 0, 5]])
我知道 torch.diag()
returns 对角线,但我不知道如何使用它作为掩码来分配新值。我无法在此处或 PyTorch 文档中找到答案。
一种方法:
>>> import torch
>>> n = 3
>>> t = torch.zeros((n,n))
>>> t[torch.eye(n).byte()] = 5
>>> t
5 0 0
0 5 0
0 0 5
[torch.FloatTensor of size 3x3]
您可以在 PyTorch 中使用 fill_diagonal_
:
>>> a = torch.zeros(3, 3)
>>> a.fill_diagonal_(5)
tensor([[5, 0, 0],
[0, 5, 0],
[0, 0, 5]])
如何用 torch 中的值填充对角线?在 numpy 中你可以这样做:
a = np.zeros((3, 3), int)
np.fill_diagonal(a, 5)
array([[5, 0, 0],
[0, 5, 0],
[0, 0, 5]])
我知道 torch.diag()
returns 对角线,但我不知道如何使用它作为掩码来分配新值。我无法在此处或 PyTorch 文档中找到答案。
一种方法:
>>> import torch
>>> n = 3
>>> t = torch.zeros((n,n))
>>> t[torch.eye(n).byte()] = 5
>>> t
5 0 0
0 5 0
0 0 5
[torch.FloatTensor of size 3x3]
您可以在 PyTorch 中使用 fill_diagonal_
:
>>> a = torch.zeros(3, 3)
>>> a.fill_diagonal_(5)
tensor([[5, 0, 0],
[0, 5, 0],
[0, 0, 5]])