I defined a type of loss and encounter *** RuntimeError: a leaf Variable that requires grad has been used in an in-place operation. The loss is defined as follows
def SMLoss(feature):
    co=feature.mm(feature.t())
            l=co.diag().resize(batch_size,1).sqrt()
         S=co.div(l.mm(l.t()))+1
             W=S.resize(le,1)
             P=S.div(S.sum(1).mm(torch.autograd.Variable(torch.ones(1,batch_size)).cuda()))
             VP=P.resize(le,1)
             VPT=torch.cat(P.t().unsqueeze(2),0)
             tmp=VP.mm(VPT.t())
             smloss=torch.autograd.Variable(torch.zeros(le,le).cuda(),requires_grad=True)
         for u in range(0,le):
          for v in range(0,le):
                           smloss[u,v]=tmp[u,v]*((W[p[u,v]]-W[q[u,v]])**2)
         return smloss.sum()
in which p and q are index-maps pre-defined.
Can someone give me a help to solve the problem, thx a lot