编写了损失函数,但是损失没有梯度,梯度没有

时间:2018-07-26 13:11:32

标签: pytorch loss-function

谢谢,我有一些代码,写在Pytorch 0.4上

def forward(self, input, target):
    y = one_hot(target, input.size(-1))
    Psoft = torch.nn.functional.softmax(input).cpu()   
    Loss=0
    t1=target.view(1,target.size(0)).cpu()
    for i in range(0,target.size(0)-1):
        t2=t1[0,i]
        flag=int(t2.item())
        for j in range(1,flag+2):
            P1=Psoft[i,:j]
            y1=y[i,:j]
            Loss=(P1-y1).sum().pow(2).sum()
            #Loss+=(sum(P1-y1))**2 
        if int(t2.item())!=7:
            for k in range(flag+1,9):
                P2=Psoft[i,flag+1:8]
                y2=y[i,flag+1:8]
                Loss=(P2-y2).sum().pow(2).sum()
                #Loss+=(sum(P2-y2))**2 
    Loss=Loss/target.size(0)
    print(Loss.grad)
    return Loss 

target是一个64 * 1的张量 Psoft是64 * 8的张量 我发现Loss.grad不是 怎么毕业? 非常感谢!

0 个答案:

没有答案