Neural network 从Pytorch中的序列化模型获取state_dict时出错

Neural network 从Pytorch中的序列化模型获取state_dict时出错,neural-network,pytorch,attributeerror,Neural Network,Pytorch,Attributeerror,已经培训了我的编码器-解码器型号,并使用以下方法保存: model_state = { 'encoder': encoder, 'encoder_optimizer': encoder_optimizer, 'decoder': decoder, 'decoder_optimizer': decoder_optimizer } torch.save(model_sta

已经培训了我的编码器-解码器型号,并使用以下方法保存:

model_state = {
             'encoder': encoder,
             'encoder_optimizer': encoder_optimizer,
             'decoder': decoder,
             'decoder_optimizer': decoder_optimizer
             }
torch.save(model_state, "best_model.pth.tar")
当我单独使用模型时,这很好,但当我尝试在另一个应用程序中使用我的模型时,它会给我带来错误。因此,我尝试加载模型并将编码器和解码器保存为state_dicts。这适用于我的编码器,但当我尝试时:

checkpoint = torch.load(path_to_model, map_location=torch.device("cpu"))
decoder = checkpoint['decoder']
decoder = decoder.to(device)
encoder = checkpoint['encoder']
encoder = encoder.to(device)
torch.save(encoder.state_dict(), 'encoder.dict')
torch.save(decoder.state_dict(), 'decoder.dict')
它在torch.save(decoder.state_dict(),'decoder.dict')上失败,我得到错误:

 File "<stdin>", line 1, in <module>
  File "caption.py", line 31, in load_maps
    torch.save(decoder.state_dict(), 'decoder.dict')
  File "/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 695, in state_dict
    module.state_dict(destination, prefix + name + '.', keep_vars=keep_vars)
  File "/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 695, in state_dict
    module.state_dict(destination, prefix + name + '.', keep_vars=keep_vars)
  File "/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 696, in state_dict
    for hook in self._state_dict_hooks.values():
  File "/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 585, in __getattr__
    type(self).__name__, name))
AttributeError: 'Softmax' object has no attribute '_state_dict_hooks'

试着像这样保存模型

torch.save({'state_dict': decoder.state_dict()}, 'decoder.pth.tar')

试着像这样保存模型

torch.save({'state_dict': decoder.state_dict()}, 'decoder.pth.tar')

抱歉,在“decoder.pth”上输入了错别字,我确实将其另存为.pth.tar并编辑了问题以反映这一点。虽然我没有保存state\u dict,将来也会保存,但我需要一种无需再培训即可获取state\u dict的方法。如果没有它,我无法调用解码器。state\u dict()error@TylerLozano能否尝试删除softmax层并保存?您是否创建了自己的Softmax层模块?对不起,在“decoder.pth”上键入了错误,我将其另存为.pth.tar并编辑了问题以反映这一点。虽然我没有保存state\u dict,将来也会保存,但我需要一种无需再培训即可获取state\u dict的方法。如果没有它,我无法调用解码器。state\u dict()error@TylerLozano能否尝试删除softmax层并保存?您是否创建了自己的Softmax图层模块?