Pytorch数据类型/维度混淆类型错误:';张量';对象不可调用

Pytorch数据类型/维度混淆类型错误:';张量';对象不可调用,pytorch,Pytorch,这段代码最初是用numpy编写的,我试图通过在Pytork中重写来利用GPU计算,但由于我是Pytork的新手,我遇到了很多问题。首先,我被张量的维数弄糊涂了。有时在对张量进行操作后,只有转置张量才能解决问题,我是否可以停止执行.t()?这里的主要问题是,在行ar=torch.stack…中出现错误“TypeError:“Tensor”对象不可调用”。如有任何建议/更正,将不胜感激。Thxxx def vec_datastr(vector): vector = vector.float

这段代码最初是用numpy编写的,我试图通过在Pytork中重写来利用GPU计算,但由于我是Pytork的新手,我遇到了很多问题。首先,我被张量的维数弄糊涂了。有时在对张量进行操作后,只有转置张量才能解决问题,我是否可以停止执行.t()?这里的主要问题是,在行ar=torch.stack…中出现错误“TypeError:“Tensor”对象不可调用”。如有任何建议/更正,将不胜感激。Thxxx

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