Closed
Description
When I call optim.LoadStateDict
from a state dictionary of an exiting optimizer, the tensors are copied by reference, so if the old optimizer gets disposed the tensors are invalid.
Sample code:
var lin1 = torch.nn.Linear(10, 10);
var optim1 = torch.optim.Adam(lin1.parameters());
var optim2 = torch.optim.Adam(lin1.parameters());
optim2.load_state_dict(optim1.state_dict());
optim1.Dispose();
torch.nn.functional.mse_loss(lin1.call(torch.rand(10)), torch.rand(10)).backward();
optim2.step();
Throws:
System.InvalidOperationException: 'Tensor invalid -- empty handle.'
Metadata
Metadata
Assignees
Labels
No labels