【pytorch】加载模型出现问题 Unexpected key(s) in state_dict: “params“, “params_ema“

在尝试加载模型时遇到错误,状态字典缺少如conv_first.weight等键,同时存在未预期的键params和params_ema。文章指出,用户只需关注params_ema内的参数文件,通过修改加载语句,只加载这部分参数到模型中,可以解决报错。
部署运行你感兴趣的模型镜像

最开始

model.load_state_dict(torch.load(model_path), strict=True)

加载模型报错如下

Missing key(s) in state_dict: "conv_first.weight", "conv_first.bias", .... 
Unexpected key(s) in state_dict: "params", "params_ema"

训练好的模型键值有许多,只需要模型参数文件,我的参数文件在params_ema内
修改如下即可

state_dict = torch.load(model_path)
model.load_state_dict(state_dict['params_ema'], strict=True)

您可能感兴趣的与本文相关的镜像

PyTorch 2.9

PyTorch 2.9

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

RuntimeError: Error(s) in loading state_dict for VMUNet: Missing key(s) in state_dict: "total_ops", "total_params", "vmunet.total_ops", "vmunet.total_params", "vmunet.patch_embed.total_ops", "vmunet.patch_embed.total_params", "vmunet.patch_embed.proj.weight", "vmunet.patch_embed.proj.bias", "vmunet.patch_embed.norm.weight", "vmunet.patch_embed.norm.bias", "vmunet.layers.total_ops", "vmunet.layers.total_params", "vmunet.layers.0.total_ops", "vmunet.layers.0.total_params", "vmunet.layers.0.blocks.total_ops", "vmunet.layers.0.blocks.total_params", "vmunet.layers.0.blocks.0.total_ops", "vmunet.layers.0.blocks.0.total_params", "vmunet.layers.0.blocks.0.ln_1.weight", "vmunet.layers.0.blocks.0.ln_1.bias", "vmunet.layers.0.blocks.0.self_attention.x_proj_weight", "vmunet.layers.0.blocks.0.self_attention.dt_projs_weight", "vmunet.layers.0.blocks.0.self_attention.dt_projs_bias", "vmunet.layers.0.blocks.0.self_attention.A_logs", "vmunet.layers.0.blocks.0.self_attention.Ds", "vmunet.layers.0.blocks.0.self_attention.total_ops", "vmunet.layers.0.blocks.0.self_attention.total_params", "vmunet.layers.0.blocks.0.self_attention.in_proj.weight", "vmunet.layers.0.blocks.0.self_attention.conv2d.weight", "vmunet.layers.0.blocks.0.self_attention.conv2d.bias", "vmunet.layers.0.blocks.0.self_attention.act.total_ops", "vmunet.layers.0.blocks.0.self_attention.act.total_params", "vmunet.layers.0.blocks.0.self_attention.out_norm.weight", "vmunet.layers.0.blocks.0.self_attention.out_norm.bias", "vmunet.layers.0.blocks.0.self_attention.out_proj.weight", "vmunet.layers.0.blocks.0.drop_path.total_ops", "vmunet.layers.0.blocks.0.drop_path.total_params", "vmunet.layers.0.blocks.1.total_ops", "vmunet.layers.0.blocks.1.total_params", "vmunet.layers.0.blocks.1.ln_1.weight", "vmunet.layers.0.blocks.1.ln_1.bias", "vmunet.layers.0.blocks.1.self_attention.x_proj_weight", "vmunet.layers.0.blocks.1.self_attention.dt_projs_weight", "vmunet.layers.0.blocks.1.self_attention.dt_projs_bias", "vmunet.layers.0.blocks.1.self_attention.A_logs", "vmunet.layers.0.blocks.1.self_attention.Ds", "vmunet.layers.0.blocks.1.self_attention.total_ops", "vmunet.layers.0.blocks.1.self_attention.total_params", "vmunet.layers.0.blocks.1.self_attention.in_proj.weight", "vmunet.layers.0.blocks.1.self_attention.conv2d.weight", "vmunet.layers.0.blocks.1.self_attention.conv2d.bias", "vmunet.layers.0.blocks.1.self_attention.act.total_ops", "vmunet.layers.0.blocks.1.self_attention.act.total_params", "vmunet.layers.0.blocks.1.self_attention.out_norm.weight", "vmunet.layers.0.blocks.1.self_attention.out_norm.bias", "vmunet.layers.0.blocks.1.self_attention.out_proj.weight", "vmunet.layers.0.blocks.1.drop_path.total_ops", "vmunet.layers.0.blocks.1.drop_path.total_params", "vmunet.layers.0.downsample.total_ops", "vmunet.layers.0.downsample.total_params", "vmunet.layers.0.downsample.reduction.weight", "vmunet.layers.0.downsample.norm.weight", "vmunet.layers.0.downsample.norm.bias", "vmunet.layers.1.total_ops", "vmunet.layers.1.total_params", "vmunet.layers.1.blocks.total_ops", "vmunet.layers.1.blocks.total_params", "vmunet.layers.1.blocks.0.total_ops", "vmunet.layers.1.blocks.0.total_params", "vmunet.layers.1.blocks.0.ln_1.weight", "vmunet.layers.1.blocks.0.ln_1.bias", "vmunet.layers.1.blocks.0.self_attention.x_proj_weight", "vmunet.layers.1.blocks.0.self_attention.dt_projs_weight", "vmunet.layers.1.blocks.0.self_attention.dt_projs_bias", "vmunet.layers.1.blocks.0.self_attention.A_logs", "vmunet.layers.1.blocks.0.self_attention.Ds", "vmunet.layers.1.blocks.0.self_attention.total_ops", "vmunet.layers.1.blocks.0.self_attention.total_params", "vmunet.layers.1.blocks.0.self_attention.in_proj.weight", "vmunet.layers.1.blocks.0.self_attention.conv2d.weight", "vmunet.layers.1.blocks.0.self_attention.conv2d.bias", "vmunet.layers.1.blocks.0.self_attention.act.total_ops", "vmunet.layers.1.blocks.0.self_attention.act.total_params", "vmunet.layers.1.blocks.0.self_attention.out_norm.weight", "vmunet.layers.1.blocks.0.self_attention.out_norm.bias", "vmunet.layers.1.blocks.0.self_attention.out_proj.weight", "vmunet.layers.1.blocks.0.drop_path.total_ops", "vmunet.layers.1.blocks.0.drop_path.total_params", "vmunet.layers.1.blocks.1.total_ops", "vmunet.layers.1.blocks.1.total_params", "vmunet.layers.1.blocks.1.ln_1.weight", "vmunet.layers.1.blocks.1.ln_1.bias", "vmunet.layers.1.blocks.1.self_attention.x_proj_weight", "vmunet.layers.1.blocks.1.self_attention.dt_projs_weight", "vmunet.layers.1.blocks.1.self_attention.dt_projs_bias", "vmunet.layers.1.blocks.1.self_attention.A_logs", "vmunet.layers.1.blocks.1.self_attention.Ds", "vmunet.layers.1.blocks.1.self_attention.total_ops", "vmunet.layers.1.blocks.1.self_attention.total_params", "vmunet.layers.1.blocks.1.self_attention.in_proj.weight", "vmunet.layers.1.blocks.1.self_attention.conv2d.weight", "vmunet.layers.1.blocks.1.self_attention.conv2d.bias", "vmunet.layers.1.blocks.1.self_attention.act.total_ops", "vmunet.layers.1.blocks.1.self_attention.act.total_params", "vmunet.layers.1.blocks.1.self_attention.out_norm.weight", "vmunet.layers.1.blocks.1.self_attention.out_norm.bias", "vmunet.layers.1.blocks.1.self_attention.out_proj.weight", "vmunet.layers.1.blocks.1.drop_path.total_ops", "vmunet.layers.1.blocks.1.drop_path.total_params", "vmunet.layers.1.downsample.total_ops", "vmunet.layers.1.downsample.total_params", "vmunet.layers.1.downsample.reduction.weight", "vmunet.layers.1.downsample.norm.weight", "vmunet.layers.1.downsample.norm.bias", "vmunet.layers.2.total_ops", "vmunet.layers.2.total_params", "vmunet.layers.2.blocks.total_ops", "vmunet.layers.2.blocks.total_params", "vmunet.layers.2.blocks.0.total_ops", "vmunet.layers.2.blocks.0.total_params", "vmunet.layers.2.blocks.0.ln_1.weight", "vmunet.layers.2.blocks.0.ln_1.bias", "vmunet.layers.2.blocks.0.self_attention.x_proj_weight", "vmunet.layers.2.blocks.0.self_attention.dt_projs_weight", "vmunet.layers.2.blocks.0.self_attention.dt_projs_bias", "vmunet.layers.2.blocks.0.self_attention.A_logs", "vmunet.layers.2.blocks.0.self_attention.Ds", "vmunet.layers.2.blocks.0.self_attention.total_ops", "vmunet.layers.2.blocks.0.self_attention.total_params", "vmunet.layers.2.blocks.0.self_attention.in_proj.weight", "vmunet.layers.2.blocks.0.self_attention.conv2d.weight", "vmunet.layers.2.blocks.0.self_attention.conv2d.bias", "vmunet.layers.2.blocks.0.self_attention.act.total_ops", "vmunet.layers.2.blocks.0.self_attention.act.total_params", "vmunet.layers.2.blocks.0.self_attention.out_norm.weight", "vmunet.layers.2.blocks.0.self_attention.out_norm.bias", "vmunet.layers.2.blocks.0.self_attention.out_proj.weight", "vmunet.layers.2.blocks.0.drop_path.total_ops", "vmunet.layers.2.blocks.0.drop_path.total_params", "vmunet.layers.2.blocks.1.total_ops", "vmunet.layers.2.blocks.1.total_params", "vmunet.layers.2.blocks.1.ln_1.weight", "vmunet.layers.2.blocks.1.ln_1.bias", "vmunet.layers.2.blocks.1.self_attention.x_proj_weight", "vmunet.layers.2.blocks.1.self_attention.dt_projs_weight", "vmunet.layers.2.blocks.1.self_attention.dt_projs_bias", "vmunet.layers.2.blocks.1.self_attention.A_logs", "vmunet.layers.2.blocks.1.self_attention.Ds", "vmunet.layers.2.blocks.1.self_attention.total_ops", "vmunet.layers.2.blocks.1.self_attention.total_params", "vmunet.layers.2.blocks.1.self_attention.in_proj.weight", "vmunet.layers.2.blocks.1.self_attention.conv2d.weight", "vmunet.layers.2.blocks.1.self_attention.conv2d.bias", "vmunet.layers.2.blocks.1.self_attention.act.total_ops", "vmunet.layers.2.blocks.1.self_attention.act.total_params", "vmunet.layers.2.blocks.1.self_attention.out_norm.weight", "vmunet.layers.2.blocks.1.self_attention.out_norm.bias", "vmunet.layers.2.blocks.1.self_attention.out_proj.weight", "vmunet.layers.2.blocks.1.drop_path.total_ops", "vmunet.layers.2.blocks.1.drop_path.total_params", "vmunet.layers.2.downsample.total_ops", "vmunet.layers.2.downsample.total_params", "vmunet.layers.2.downsample.reduction.weight", "vmunet.layers.2.downsample.norm.weight", "vmunet.layers.2.downsample.norm.bias", "vmunet.layers.3.total_ops", "vmunet.layers.3.total_params", "vmunet.layers.3.blocks.total_ops", "vmunet.layers.3.blocks.total_params", "vmunet.layers.3.blocks.0.total_ops", "vmunet.layers.3.blocks.0.total_params", "vmunet.layers.3.blocks.0.ln_1.weight", "vmunet.layers.3.blocks.0.ln_1.bias", "vmunet.layers.3.blocks.0.self_attention.x_proj_weight", "vmunet.layers.3.blocks.0.self_attention.dt_projs_weight", "vmunet.layers.3.blocks.0.self_attention.dt_projs_bias", "vmunet.layers.3.blocks.0.self_attention.A_logs", "vmunet.layers.3.blocks.0.self_attention.Ds", "vmunet.layers.3.blocks.0.self_attention.total_ops", "vmunet.layers.3.blocks.0.self_attention.total_params", "vmunet.layers.3.blocks.0.self_attention.in_proj.weight", "vmunet.layers.3.blocks.0.self_attention.conv2d.weight", "vmunet.layers.3.blocks.0.self_attention.conv2d.bias", "vmunet.layers.3.blocks.0.self_attention.act.total_ops", "vmunet.layers.3.blocks.0.self_attention.act.total_params", "vmunet.layers.3.blocks.0.self_attention.out_norm.weight", "vmunet.layers.3.blocks.0.self_attention.out_norm.bias", "vmunet.layers.3.blocks.0.self_attention.out_proj.weight", "vmunet.layers.3.blocks.0.drop_path.total_ops", "vmunet.layers.3.blocks.0.drop_path.total_params", "vmunet.layers.3.blocks.1.total_ops", "vmunet.layers.3.blocks.1.total_params", "vmunet.layers.3.blocks.1.ln_1.weight", "vmunet.layers.3.blocks.1.ln_1.bias", "vmunet.layers.3.blocks.1.self_attention.x_proj_weight", "vmunet.layers.3.blocks.1.self_attention.dt_projs_weight", "vmunet.layers.3.blocks.1.self_attention.dt_projs_bias", "vmunet.layers.3.blocks.1.self_attention.A_logs", "vmunet.layers.3.blocks.1.self_attention.Ds", "vmunet.layers.3.blocks.1.self_attention.total_ops", "vmunet.layers.3.blocks.1.self_attention.total_params", "vmunet.layers.3.blocks.1.self_attention.in_proj.weight", "vmunet.layers.3.blocks.1.self_attention.conv2d.weight", "vmunet.layers.3.blocks.1.self_attention.conv2d.bias", "vmunet.layers.3.blocks.1.self_attention.act.total_ops", "vmunet.layers.3.blocks.1.self_attention.act.total_params", "vmunet.layers.3.blocks.1.self_attention.out_norm.weight", "vmunet.layers.3.blocks.1.self_attention.out_norm.bias", "vmunet.layers.3.blocks.1.self_attention.out_proj.weight", "vmunet.layers.3.blocks.1.drop_path.total_ops", "vmunet.layers.3.blocks.1.drop_path.total_params", "vmunet.layers_up.total_ops", "vmunet.layers_up.total_params", "vmunet.layers_up.0.total_ops", "vmunet.layers_up.0.total_params", "vmunet.layers_up.0.blocks.total_ops", "vmunet.layers_up.0.blocks.total_params", "vmunet.layers_up.0.blocks.0.total_ops", "vmunet.layers_up.0.blocks.0.total_params", "vmunet.layers_up.0.blocks.0.ln_1.weight", "vmunet.layers_up.0.blocks.0.ln_1.bias", "vmunet.layers_up.0.blocks.0.self_attention.x_proj_weight", "vmunet.layers_up.0.blocks.0.self_attention.dt_projs_weight", "vmunet.layers_up.0.blocks.0.self_attention.dt_projs_bias", "vmunet.layers_up.0.blocks.0.self_attention.A_logs", "vmunet.layers_up.0.blocks.0.self_attention.Ds", "vmunet.layers_up.0.blocks.0.self_attention.total_ops", "vmunet.layers_up.0.blocks.0.self_attention.total_params", "vmunet.layers_up.0.blocks.0.self_attention.in_proj.weight", "vmunet.layers_up.0.blocks.0.self_attention.conv2d.weight", "vmunet.layers_up.0.blocks.0.self_attention.conv2d.bias", "vmunet.layers_up.0.blocks.0.self_attention.act.total_ops", "vmunet.layers_up.0.blocks.0.self_attention.act.total_params", "vmunet.layers_up.0.blocks.0.self_attention.out_norm.weight", "vmunet.layers_up.0.blocks.0.self_attention.out_norm.bias", "vmunet.layers_up.0.blocks.0.self_attention.out_proj.weight", "vmunet.layers_up.0.blocks.0.drop_path.total_ops", "vmunet.layers_up.0.blocks.0.drop_path.total_params", "vmunet.layers_up.0.blocks.1.total_ops", "vmunet.layers_up.0.blocks.1.total_params", "vmunet.layers_up.0.blocks.1.ln_1.weight", "vmunet.layers_up.0.blocks.1.ln_1.bias", "vmunet.layers_up.0.blocks.1.self_attention.x_proj_weight", "vmunet.layers_up.0.blocks.1.self_attention.dt_projs_weight", "vmunet.layers_up.0.blocks.1.self_attention.dt_projs_bias", "vmunet.layers_up.0.blocks.1.self_attention.A_logs", "vmunet.layers_up.0.blocks.1.self_attention.Ds", "vmunet.layers_up.0.blocks.1.self_attention.total_ops", "vmunet.layers_up.0.blocks.1.self_attention.total_params", "vmunet.layers_up.0.blocks.1.self_attention.in_proj.weight", "vmunet.layers_up.0.blocks.1.self_attention.conv2d.weight", "vmunet.layers_up.0.blocks.1.self_attention.conv2d.bias", "vmunet.layers_up.0.blocks.1.self_attention.act.total_ops", "vmunet.layers_up.0.blocks.1.self_attention.act.total_params", "vmunet.layers_up.0.blocks.1.self_attention.out_norm.weight", "vmunet.layers_up.0.blocks.1.self_attention.out_norm.bias", "vmunet.layers_up.0.blocks.1.self_attention.out_proj.weight", "vmunet.layers_up.0.blocks.1.drop_path.total_ops", "vmunet.layers_up.0.blocks.1.drop_path.total_params", "vmunet.layers_up.1.total_ops", "vmunet.layers_up.1.total_params", "vmunet.layers_up.1.blocks.total_ops", "vmunet.layers_up.1.blocks.total_params", "vmunet.layers_up.1.blocks.0.total_ops", "vmunet.layers_up.1.blocks.0.total_params", "vmunet.layers_up.1.blocks.0.ln_1.weight", "vmunet.layers_up.1.blocks.0.ln_1.bias", "vmunet.layers_up.1.blocks.0.self_attention.x_proj_weight", "vmunet.layers_up.1.blocks.0.self_attention.dt_projs_weight", "vmunet.layers_up.1.blocks.0.self_attention.dt_projs_bias", "vmunet.layers_up.1.blocks.0.self_attention.A_logs", "vmunet.layers_up.1.blocks.0.self_attention.Ds", "vmunet.layers_up.1.blocks.0.self_attention.total_ops", "vmunet.layers_up.1.blocks.0.self_attention.total_params", "vmunet.layers_up.1.blocks.0.self_attention.in_proj.weight", "vmunet.layers_up.1.blocks.0.self_attention.conv2d.weight", "vmunet.layers_up.1.blocks.0.self_attention.conv2d.bias", "vmunet.layers_up.1.blocks.0.self_attention.act.total_ops", "vmunet.layers_up.1.blocks.0.self_attention.act.total_params", "vmunet.layers_up.1.blocks.0.self_attention.out_norm.weight", "vmunet.layers_up.1.blocks.0.self_attention.out_norm.bias", "vmunet.layers_up.1.blocks.0.self_attention.out_proj.weight", "vmunet.layers_up.1.blocks.0.drop_path.total_ops", "vmunet.layers_up.1.blocks.0.drop_path.total_params", "vmunet.layers_up.1.blocks.1.total_ops", "vmunet.layers_up.1.blocks.1.total_params", "vmunet.layers_up.1.blocks.1.ln_1.weight", "vmunet.layers_up.1.blocks.1.ln_1.bias", "vmunet.layers_up.1.blocks.1.self_attention.x_proj_weight", "vmunet.layers_up.1.blocks.1.self_attention.dt_projs_weight", "vmunet.layers_up.1.blocks.1.self_attention.dt_projs_bias", "vmunet.layers_up.1.blocks.1.self_attention.A_logs", "vmunet.layers_up.1.blocks.1.self_attention.Ds", "vmunet.layers_up.1.blocks.1.self_attention.total_ops", "vmunet.layers_up.1.blocks.1.self_attention.total_params", "vmunet.layers_up.1.blocks.1.self_attention.in_proj.weight", "vmunet.layers_up.1.blocks.1.self_attention.conv2d.weight", "vmunet.layers_up.1.blocks.1.self_attention.conv2d.bias", "vmunet.layers_up.1.blocks.1.self_attention.act.total_ops", "vmunet.layers_up.1.blocks.1.self_attention.act.total_params", "vmunet.layers_up.1.blocks.1.self_attention.out_norm.weight", "vmunet.layers_up.1.blocks.1.self_attention.out_norm.bias", "vmunet.layers_up.1.blocks.1.self_attention.out_proj.weight", "vmunet.layers_up.1.blocks.1.drop_path.total_ops", "vmunet.layers_up.1.blocks.1.drop_path.total_params", "vmunet.layers_up.1.upsample.total_ops", "vmunet.layers_up.1.upsample.total_params", "vmunet.layers_up.1.upsample.expand.weight", "vmunet.layers_up.1.upsample.norm.weight", "vmunet.layers_up.1.upsample.norm.bias", "vmunet.layers_up.2.total_ops", "vmunet.layers_up.2.total_params", "vmunet.layers_up.2.blocks.total_ops", "vmunet.layers_up.2.blocks.total_params", "vmunet.layers_up.2.blocks.0.total_ops", "vmunet.layers_up.2.blocks.0.total_params", "vmunet.layers_up.2.blocks.0.ln_1.weight", "vmunet.layers_up.2.blocks.0.ln_1.bias", "vmunet.layers_up.2.blocks.0.self_attention.x_proj_weight", "vmunet.layers_up.2.blocks.0.self_attention.dt_projs_weight", "vmunet.layers_up.2.blocks.0.self_attention.dt_projs_bias", "vmunet.layers_up.2.blocks.0.self_attention.A_logs", "vmunet.layers_up.2.blocks.0.self_attention.Ds", "vmunet.layers_up.2.blocks.0.self_attention.total_ops", "vmunet.layers_up.2.blocks.0.self_attention.total_params", "vmunet.layers_up.2.blocks.0.self_attention.in_proj.weight", "vmunet.layers_up.2.blocks.0.self_attention.conv2d.weight", "vmunet.layers_up.2.blocks.0.self_attention.conv2d.bias", "vmunet.layers_up.2.blocks.0.self_attention.act.total_ops", "vmunet.layers_up.2.blocks.0.self_attention.act.total_params", "vmunet.layers_up.2.blocks.0.self_attention.out_norm.weight", "vmunet.layers_up.2.blocks.0.self_attention.out_norm.bias", "vmunet.layers_up.2.blocks.0.self_attention.out_proj.weight", "vmunet.layers_up.2.blocks.0.drop_path.total_ops", "vmunet.layers_up.2.blocks.0.drop_path.total_params", "vmunet.layers_up.2.blocks.1.total_ops", "vmunet.layers_up.2.blocks.1.total_params", "vmunet.layers_up.2.blocks.1.ln_1.weight", "vmunet.layers_up.2.blocks.1.ln_1.bias", "vmunet.layers_up.2.blocks.1.self_attention.x_proj_weight", "vmunet.layers_up.2.blocks.1.self_attention.dt_projs_weight", "vmunet.layers_up.2.blocks.1.self_attention.dt_projs_bias", "vmunet.layers_up.2.blocks.1.self_attention.A_logs", "vmunet.layers_up.2.blocks.1.self_attention.Ds", "vmunet.layers_up.2.blocks.1.self_attention.total_ops", "vmunet.layers_up.2.blocks.1.self_attention.total_params", "vmunet.layers_up.2.blocks.1.self_attention.in_proj.weight", "vmunet.layers_up.2.blocks.1.self_attention.conv2d.weight", "vmunet.layers_up.2.blocks.1.self_attention.conv2d.bias", "vmunet.layers_up.2.blocks.1.self_attention.act.total_ops", "vmunet.layers_up.2.blocks.1.self_attention.act.total_params", "vmunet.layers_up.2.blocks.1.self_attention.out_norm.weight", "vmunet.layers_up.2.blocks.1.self_attention.out_norm.bias", "vmunet.layers_up.2.blocks.1.self_attention.out_proj.weight", "vmunet.layers_up.2.blocks.1.drop_path.total_ops", "vmunet.layers_up.2.blocks.1.drop_path.total_params", "vmunet.layers_up.2.upsample.total_ops", "vmunet.layers_up.2.upsample.total_params", "vmunet.layers_up.2.upsample.expand.weight", "vmunet.layers_up.2.upsample.norm.weight", "vmunet.layers_up.2.upsample.norm.bias", "vmunet.layers_up.3.total_ops", "vmunet.layers_up.3.total_params", "vmunet.layers_up.3.blocks.total_ops", "vmunet.layers_up.3.blocks.total_params", "vmunet.layers_up.3.blocks.0.total_ops", "vmunet.layers_up.3.blocks.0.total_params", "vmunet.layers_up.3.blocks.0.ln_1.weight", "vmunet.layers_up.3.blocks.0.ln_1.bias", "vmunet.layers_up.3.blocks.0.self_attention.x_proj_weight", "vmunet.layers_up.3.blocks.0.self_attention.dt_projs_weight", "vmunet.layers_up.3.blocks.0.self_attention.dt_projs_bias", "vmunet.layers_up.3.blocks.0.self_attention.A_logs", "vmunet.layers_up.3.blocks.0.self_attention.Ds", "vmunet.layers_up.3.blocks.0.self_attention.total_ops", "vmunet.layers_up.3.blocks.0.self_attention.total_params", "vmunet.layers_up.3.blocks.0.self_attention.in_proj.weight", "vmunet.layers_up.3.blocks.0.self_attention.conv2d.weight", "vmunet.layers_up.3.blocks.0.self_attention.conv2d.bias", "vmunet.layers_up.3.blocks.0.self_attention.act.total_ops", "vmunet.layers_up.3.blocks.0.self_attention.act.total_params", "vmunet.layers_up.3.blocks.0.self_attention.out_norm.weight", "vmunet.layers_up.3.blocks.0.self_attention.out_norm.bias", "vmunet.layers_up.3.blocks.0.self_attention.out_proj.weight", "vmunet.layers_up.3.blocks.0.drop_path.total_ops", "vmunet.layers_up.3.blocks.0.drop_path.total_params", "vmunet.layers_up.3.upsample.total_ops", "vmunet.layers_up.3.upsample.total_params", "vmunet.layers_up.3.upsample.expand.weight", "vmunet.layers_up.3.upsample.norm.weight", "vmunet.layers_up.3.upsample.norm.bias", "vmunet.final_up.total_ops", "vmunet.final_up.total_params", "vmunet.final_up.expand.weight", "vmunet.final_up.norm.weight", "vmunet.final_up.norm.bias", "vmunet.final_conv.weight", "vmunet.final_conv.bias". Unexpected key(s) in state_dict: "model", "optimizer", "lr_scheduler", "max_accuracy", "scaler", "epoch", "config", "model_ema", "max_accuray_ema", "model_ori".
最新发布
05-23
<think>嗯,用户遇到了一个关于PyTorch模型状态字典的问题,具体是“Missing key(s) in state_dict: 'log_std'”和“Unexpected key(s) in state_dict: 'std'”。我需要仔细分析这个问题,并给出解决方案。 首先,这个问题通常发生在加载预训练模型时,模型的参数名称不匹配。用户可能在保存模型的时候使用了不同的参数名,导致加载时找不到对应的键。例如,保存的模型有一个参数叫'std',但加载模型期望的是'log_std'。这时候,PyTorch就会提示缺少'log_std',而多出了'std'。 接下来,我需要考虑可能的原因。最常见的原因是模型结构在保存和加载时不一致。可能用户在训练时使用了自定义的层或参数名,而在加载模型结构发生了变化,或者加载模型的代码没有正确对应保存时的结构。此外,用户可能在保存模型时修改了参数名称,例如将'log_std'保存为'std',或者相反。 然后,解决方案部分。首先,应该检查模型的结构,确保保存和加载时的模型定义一致。如果参数只是名称不同,可以通过重命名键来解决。例如,将'std'改为'log_std'。这可以通过遍历state_dict并修改键名来实现。另外,如果用户使用的是别人的预训练模型,可能需要查看文档,确认是否有参数名的变化。最后,在加载模型时,使用strict=False参数可以忽略不匹配的键,但需要注意这可能导致模型性能问题,因为部分参数未被加载。 我还需要考虑用户可能的背景。他们可能对PyTorch有一定了解,但在处理模型保存和加载时遇到了困难。可能需要具体的代码示例来帮助理解如何重命名键。同时,提醒用户注意使用strict=False的风险,避免潜在的错误。 最后,总结问题,强调检查模型结构一致性和参数名匹配的重要性,并提供两种解决方案:修改键名或使用非严格加载。确保回答清晰,步骤明确,帮助用户逐步解决问题。</think>这个问题通常出现在PyTorch模型参数加载过程中,涉及模型`state_dict`的键名不匹配。以下是逐步分析及解决方案: --- ### **问题本质** ```python Missing key(s) in state_dict: "log_std" Unexpected key(s) in state_dict: "std" ``` - **直接原因**:加载模型参数文件(`state_dict`)中存在名为`std`的参数,但当前模型期望的参数名为`log_std`。 - **技术背景**:PyTorch通过`state_dict`的键名严格匹配参数。若模型定义(`__init__()`)与参数文件中的键名不一致,就会触发此错误。 --- ### **常见场景** 1. **自定义模型改动** 修改了模型的参数命名(如将`log_std`重命名为`std`),但未同步更新预训练参数文件。 2. **第三方模型加载** 尝试加载他人训练的模型时,对方模型定义与你本地代码不一致。 3. **版本兼容性问题** 框架或库版本更新导致参数命名规则变化。 --- ### **解决方案** #### 方法1:重命名键名(推荐) 修改`state_dict`中的键名以匹配当前模型定义: ```python import torch # 加载原始参数文件 checkpoint = torch.load("model.pth") # 重命名键:将 "std" 改为 "log_std" new_checkpoint = {} for key, value in checkpoint.items(): new_key = key.replace("std", "log_std") new_checkpoint[new_key] = value # 加载修改后的参数到模型 model.load_state_dict(new_checkpoint, strict=True) ``` #### 方法2:非严格模式加载 允许忽略不匹配的键名(需谨慎): ```python model.load_state_dict(checkpoint, strict=False) ``` - ✅ 优点:快速绕过错误 - ❌ 缺点:可能导致部分参数未加载,影响模型性能 --- ### **验证步骤** 1. **检查模型定义** 确认模型中是否存在`log_std`参数(如策略梯度算法中的对数标准差)。 2. **对比键名列表** ```python print("Model expects keys:", model.state_dict().keys()) print("Checkpoint has keys:", checkpoint.keys()) ``` 3. **参数映射分析** 若存在多个不匹配键名,需系统性修复(如批量替换`old_key`→`new_key`)。 --- ### **预防措施** 1. **保持命名一致性** 在模型训练和加载过程中使用相同的参数命名规范。 2. **版本控制** 对模型定义和参数文件进行版本标记(如Git标签)。 3. **导出参数前验证** ```python torch.save(model.state_dict(), "model.pth") # 保存前确保参数名正确 ``` --- ### **扩展知识** - `state_dict`是PyTorch模型的核心属性,存储所有可学习参数(权重、偏置等)的键值对。 - 若遇到更复杂的键名不匹配问题,可使用`collections.OrderedDict`重构参数字典。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值