Hi,
Community, I got a problem.
Suppose the customized loss function has parameter x
, e.g.,
Loss = f(outputs, targets, x)
Now I use torch.autograd.grad
to compute the gradient w.r.t. to model parameters (not x
)
The problem is that I cannot manually update the model parameters such that x
is contained in the graph and still backpropagable.
For example
If I do param = param - lr * grad
OR tmp = param - lr*grad; setattr(model, name, tmp)
, the error is cannot assign 'torch.cuda.FloatTensor' as parameter
If I convert Tensor to nn.Parameter OR using param.data = ...
, then x
is not in graph.
(and backward()
+ step()
is the same as updating param.data
)