在Pytorch中,假设我有一个top-k索引矩阵P(B,N,k)、一个权重矩阵W(B,N,N)和一个目标矩阵A(B,N,N),我希望得到一个相邻的矩阵,它作为以下循环运行:
for i in range(B):
for ii in range(N):
for j in range(k):
if weighted:
A[i][ii][P[i][ii][j]] = W[i][ii][P[i][ii][j]]
else:
A[i][ii][P[i][i
要在Pytorch中执行backward,我们可以使用一个可选参数y.backward(v)来计算乘以v的雅可比矩阵 x = torch.randn(3, requires_grad=True)
y = x * 2
v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(v)
print(x.grad) 我认为计算雅可比矩阵的成本是相同的,因为计算雅可比矩阵所必需的AD图中的每个节点仍然是计算的。那么为什么Pytorch不想给我们雅可比矩阵呢?
对于numpy,我可以这样做一个简单的矩阵乘法:
a = numpy.ones((3, 2))
b = numpy.ones((2, 1))
result = a.dot(b)
但是,这不适用于PyTorch:
a = torch.ones((3, 2))
b = torch.ones((2, 1))
result = torch.dot(a, b)
此代码引发以下错误:
RuntimeError:一维张量,但得到二维张量和二维张量
如何在PyTorch中执行矩阵乘法?
我正在学习本教程https://pytorch.org/tutorials/beginner/nlp/deep_learning_tutorial.html#example-logistic-regression-bag-of-words-classifier nn.Linear(vocab_size, num_labels)表示矩阵形状为num_labels x vocab_size bow_vector维度为1 x vocab_size,nn.linear的输入应为batch_size x features 现在,我们将num_labels x vocab_size矩阵乘以1 x voc
这似乎是一个基本的问题,但我无法解决。
在神经网络的前通过中,我有一个形状为8x3x3的输出张量,其中8是我的批次大小。我们可以假定每个3x3张量都是一个非奇异矩阵。我需要找到这些矩阵的逆。PyTorch 函数仅适用于方阵。既然我现在有8x3x3,如何以可微的方式将此函数应用于批处理中的每个矩阵?
如果我迭代这些示例并将逆附加到python列表中,然后将其转换为PyTorch张量,那么它是否会在备份期间出现问题呢?(我的问题是,因为将PyTorch张量转换为numpy来执行一些操作,然后返回到张量,就不会在支持这些操作时计算梯度)。
当我尝试做类似的事情时,我也会得到以下错误。
a = tor