加载和自己模型不匹配的预训练模型参数解决方法
net = .... #自己的模型
save_model = torch.load(model_weight_path) # 获取预训练模型字典(键值对)
model_dict = net.state_dict() # 获取自己模型字典(键值对)
# 新定义字典,用来获取自己模型中对应层的预训练模型中的参数
state_dict = {k:v for k,v in save_model.items() if k in model_dict.keys()}
state_dict.pop('fc.weight') # 丢掉FC层,因为输出不同,或_fc.weight
state_dict.pop('fc.bias') # 丢掉FC层,因为输出不同,或_fc.bias
model_dict.update(state_dict) # 更新自己模型字典中键值对
net.load_state_dict(model_dict) # 加载参数
本文标题:加载和自己模型不匹配的预训练模型参数解决方法
本文链接:https://www.haomeiwen.com/subject/gnfkcrtx.html
网友评论