I want to estimate the Fisher Information matrix and in the network I have set some require_grads = False because I do not want them to be updated:
That is what I did
loglikelihood_grads = autograd.grad(loglikelihood, self.parameters())
parameter_names = [
n.replace('.', '__') for n, p in self.named_parameters()
]
return {n: g**2 for n, g in zip(parameter_names, loglikelihood_grads)}
I got the following error RuntimeError: One of the differentiated Variables does not require grad.
But if I replace self.parameters() with filter(lambda p: p.requires_grad, self.parameters()) in the loglikelihood_grads = autograd.grad(loglikelihood, self.parameters())
how can I find the proper order of names in the loglikelihood_grads that corresponging to?