

pytorchで推論をしようと保存したモデルを読み込もうとするとエラーが出てきます。  
Google colabの環境下で、gpuで学習を行い、CPUしかない環境下で以下のプログラムを実行するとエラーが出てきます。

[code]

    model = Model
    model.load_state_dict(torch.load("185.pth"))
    
[/code]

`model.load_state_dict(torch.load("185.pth"),map_location=torch.device('cpu'))`としてもエラーが出てきます。

[code]

    /usr/local/lib/python3.7/dist-packages/torch/serialization.py in validate_cuda_device(location)
        133 
        134     if not torch.cuda.is_available():
    --> 135         raise RuntimeError('Attempting to deserialize object on a CUDA '
        136                            'device but torch.cuda.is_available() is False. '
        137                            'If you are running on a CPU-only machine, '
    
    RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.
    
[/code]

どうすればいいのでしょうか？  
モデルの保存時は、`torch.save(net.state_dict(),'filename.pth')`で保存しています

* * *

追記

[code]

    PATH ="193.pth"
    
    model = Model
    device = torch.device('cpu')
    model = Model
    model.load_state_dict(torch.load(PATH, map_location=device))
    
[/code]

とコードを変更したところ、以下のエラーになりました。

[code]

    TypeError: load_state_dict() missing 1 required positional argument: 'state_dict'
    
[/code]

もしかしてなのですが、Optunaで学習時に使用していたモデルのままではだめなのでしょうか？  
[こちらのサイト](https://qiita.com/Yushi1958/items/cd22ade638f7e292e520)を参考にOptunaで学習させています。  
ダメとすると、各ハイパーパラメータの値、関数を自分で入力してモデルを一度作成して、読み込むしかないのでしょうか？プログラムである程度自動的に各ハイパーパラメータの値、関数を入れることはできないのでしょうか？


CC BY-SA 4.0
2022-03-03T08:36:55.493
86669
2022-03-03T09:39:04.250
2022-03-03T09:39:04.250
42741
42741
question
python 機械学習 pytorch
Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is Falseが解消できない。