从检查点加载模型不起作用
Loading model from checkpoint is not working
我训练了一个从 this repository 修改而来的香草 vae。当我尝试使用经过训练的模型时,我无法使用 load_from_checkpoint
加载权重。我的检查点对象和我的 lightningModule
对象之间似乎不匹配。
我已经使用 pytorch-lightning LightningModule
设置了一个实验 (VAEXperiment
)。我尝试将权重加载到网络中:
#building a new model
model = VanillaVAE(**config['model_params'])
model.build_layers()
#loading the weights
experiment = VAEXperiment(model, config['exp_params'])
experiment.load_from_checkpoint(path_to_checkpoint, config['exp_params'])
我也试过:
checkpoint = torch.load(path_to_checkpoint, map_location=lambda storage, loc: storage)
model.load_state_dict(checkpoint['state_dict'])
但是我得到一个错误
Unexpected key(s) in state_dict: "model.encoder.0.0.weight", "model.encoder.0.0.bias"
...
我也关注了这个问题
https://github.com/PyTorchLightning/pytorch-lightning/issues/924
https://github.com/PyTorchLightning/pytorch-lightning/issues/2798
为什么会出现此错误?是因为我模型中的编码器和解码器模块吗?根据登录 git 的问题,错误似乎已解决。我做错了什么?
发布评论中的答案:
experiment.load_state_dict(checkpoint['state_dict'])
我训练了一个从 this repository 修改而来的香草 vae。当我尝试使用经过训练的模型时,我无法使用 load_from_checkpoint
加载权重。我的检查点对象和我的 lightningModule
对象之间似乎不匹配。
我已经使用 pytorch-lightning LightningModule
设置了一个实验 (VAEXperiment
)。我尝试将权重加载到网络中:
#building a new model
model = VanillaVAE(**config['model_params'])
model.build_layers()
#loading the weights
experiment = VAEXperiment(model, config['exp_params'])
experiment.load_from_checkpoint(path_to_checkpoint, config['exp_params'])
我也试过:
checkpoint = torch.load(path_to_checkpoint, map_location=lambda storage, loc: storage)
model.load_state_dict(checkpoint['state_dict'])
但是我得到一个错误
Unexpected key(s) in state_dict: "model.encoder.0.0.weight", "model.encoder.0.0.bias"
...
我也关注了这个问题 https://github.com/PyTorchLightning/pytorch-lightning/issues/924 https://github.com/PyTorchLightning/pytorch-lightning/issues/2798
为什么会出现此错误?是因为我模型中的编码器和解码器模块吗?根据登录 git 的问题,错误似乎已解决。我做错了什么?
发布评论中的答案:
experiment.load_state_dict(checkpoint['state_dict'])