如何解决如何初始化矩阵的火炬
你好,我正在尝试创建一个张量,该张量将在n个n×n大小的N个矩阵内。我试图用
初始化它Q=torch.zeros(N,(n,n))
但是我遇到以下错误
zeros(): argument 'size' must be tuple of ints,but found element of type tuple at pos 2
我还想稍后用具有整数值的随机矩阵填充它,并将其变为半定义,所以我想到了以下内容
for i in range(0,N):
Q[i]=torch.randint(0,10,n))
Q = Q*Q.t()
对吗?内置命令还有其他更快的方法吗?
解决方法
大小为
N
的 n x n
矩阵等效于形状为[N,n,n]
的三维张量。您可以这样做:
import torch
N = 32
n = 10
tensor = torch.randint(0,10,size=(N,n))
一开始无需填充zeros
,您可以直接创建。
您也可以像执行以下操作一样遍历0
维度:
for i in range(0,N):
tensor[i] = tensor[i] * tensor[i].T
有关置换的更快方法,请参见@Dishin H Goyani答案。
,- 在这里,您应该传递
N,n
以获得N
大小的n
的{{1}}矩阵。正如@Szymon在他的answer 中所解释的那样
n
- 对于后面的部分,您可以使用
torch.Tensor.permute
来转置内部张量
Q = torch.randint(0,n))
,
- 使用
torch.empty
创建未初始化的张量(比torch.zeros
更快)torch.empty
Q = torch.empty(N,n)
- 初始化它:
for i in range(0,N):
Q[i] = torch.randint(0,(n,n))
- 按照@Dishin H Goyani的建议使用
.permute
。
您可以在元组的 iterables 上使用*
运算符,以将其作为位置参数传递。
这里是示例代码:
>>> import torch
>>> N = 2
>>> n = 3
>>> Q = torch.zeros(N,*(n,n))
>>> Q
tensor([[[0.,0.,0.],[0.,0.]],[[0.,0.]]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。