【发布时间】:2018-10-09 23:26:35
【问题描述】:
我有一个大小为 [150, 182, 91] 的张量,第一部分只是批量大小,而我感兴趣的矩阵是 182x91 的。
我需要在 182x91 矩阵上分别为 50 个维度中的每一个运行一个函数。
我需要得到一个182x91矩阵的对角矩阵条纹,我使用的函数如下(基于我之前的问题:Getting diagonal matrix stripe automatically in numpy or pytorch):
def stripe(a):
i, j = a.size()
assert (i >= j)
out = torch.zeros((i - j + 1, j))
for diag in range(0, i - j + 1):
out[diag] = torch.diag(a, -diag)
return out
stripe 函数需要一个大小为 IxJ 的矩阵,无法处理第 3 维。
所以当我运行这个时:
some_matrix = x # <class 'torch.autograd.variable.Variable'> torch.Size([150, 182, 91])
get_diag = stripe(some_matrix)
我收到此错误:ValueError: too many values to unpack (expected 2)
如果我只是尝试通过 x, i, j = a.size() 跳过第一个维度,
我明白了:RuntimeError: invalid argument 1: expected a matrix or a vector at
我仍在使用 PyTorch 0.3.1。任何帮助表示赞赏!
【问题讨论】:
标签: python matrix neural-network pytorch tensor