

要旨：  
学習を行う環境の制約上，学習の経過を一旦保存しそれらを読み込んで学習を再開するコードを書く必要があります．しかし，エラーが出てしまい学習が行えません．

エラー文：

[code]

    Traceback (most recent call last):
      File "c:/Users/.../Desktop/PINN_ACSL/NN.py", line 531, in <module>
        optimizer.step(PINN.closure)
      File "C:\Users\...\AppData\Local\Programs\Python\Python37\lib\site-packages\torch\optim\optimizer.py", line 140, in wrapper
        out = func(*args, **kwargs)
      File "C:\Users\...\AppData\Local\Programs\Python\Python37\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
        return func(*args, **kwargs)
      File "C:\Users\...\AppData\Local\Programs\Python\Python37\lib\site-packages\torch\optim\lbfgs.py", line 352, in step
        y = flat_grad.sub(prev_flat_grad)
    TypeError: sub(): argument 'other' (position 1) must be Tensor, not NoneType
    
[/code]

使用しているオプティマイザは`torch.optim.LBFGS`です．  
セーブには`torch.save(optimizer.state_dict(), PATH)`を，  
ロードには`optimizer.load_state_dict(torch.load(PATH))`を使っています．

`print(torch.load(PATH))`では学習率やtensorの値が見られるのに，  
`print(optimizer.load_state_dict(torch.load(PATH)))`ではNoneが返されるのが疑問です．  
よろしくお願いいたします．


CC BY-SA 4.0
2023-03-18T07:21:32.827
94235
2023-03-18T07:21:32.827
57579
question
python pytorch
optimizer.state_dict()で保存したオプティマイザのパラメータを使って学習の再開ができません