【发布时间】:2020-10-26 07:46:20
【问题描述】:
这段代码最初是用 numpy 编写的,我试图通过在 pytorch 中重写它来利用 GPU 计算,但是由于我是 pytorch 的新手,所以我遇到了很多问题。首先,我对张量的维度感到困惑。有时在对张量进行操作之后,只有转置张量才能解决问题,无论如何我可以停止做 .t() 吗?这里的主要问题是在 ar = torch.stack ... 行中出现错误“TypeError: 'Tensor' object is not callable”。任何建议/更正将不胜感激。呵呵
def vec_datastr(vector):
vector = vector.float()
# Find the indices corresponding to non-zero entries
index = torch.nonzero(vector)
index = index.t()
# Compute probability
prob = vector ** 2
if torch.sum(prob) == 0:
prob = 0
else:
prob = prob / torch.sum(prob)
d = depth(vector)
CumProb = torch.ones((2**d-len(prob.t()),1), device ='cuda')
cp = torch.cumsum(prob, dim=0)
cp = cp.reshape((len(cp.t()),1))
CumProb = torch.cat((cp, CumProb),0)
vector = vector.t()
prob = prob.t()
ar = torch.stack((index, vector([index,1]), prob([index, 1]), CumProb([index, 1]))) # Problems occur here
ar = ar.reshape((len(index), 4))
# Store the data as a 4-dimensional array
output = dict()
output = {'index':ar[:,0], 'value': ar[:,1], 'prob':ar[:,2], 'CumProb': ar[:,3]}
return output
【问题讨论】:
标签: pytorch