Pytorch数据类型/维度混淆类型错误:';张量';对象不可调用
这段代码最初是用numpy编写的,我试图通过在Pytork中重写来利用GPU计算,但由于我是Pytork的新手,我遇到了很多问题。首先,我被张量的维数弄糊涂了。有时在对张量进行操作后,只有转置张量才能解决问题,我是否可以停止执行.t()?这里的主要问题是,在行ar=torch.stack…中出现错误“TypeError:“Tensor”对象不可调用”。如有任何建议/更正,将不胜感激。ThxxxPytorch数据类型/维度混淆类型错误:';张量';对象不可调用,pytorch,Pytorch,这段代码最初是用numpy编写的,我试图通过在Pytork中重写来利用GPU计算,但由于我是Pytork的新手,我遇到了很多问题。首先,我被张量的维数弄糊涂了。有时在对张量进行操作后,只有转置张量才能解决问题,我是否可以停止执行.t()?这里的主要问题是,在行ar=torch.stack…中出现错误“TypeError:“Tensor”对象不可调用”。如有任何建议/更正,将不胜感激。Thxxx def vec_datastr(vector): vector = vector.float
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
向量
的类型为火炬.张量
。它没有定义调用。您选择的是vector(…)
(vector([index,1])
),而您应该像这样直接切片数据:vector[index,1]
。同样适用于prob
和CumProb
不知何故,您可以使用ar[:,0]
正确地为ar
执行此操作,因此这可能是一个打字错误
ar = torch.stack(
(index, vector([index, 1]), prob([index, 1]), CumProb([index, 1]))
) # Problems occur here