strict=False 但还是size mismatch 的解决办法
2023-08-26 23:12:51 来源:博客园
(资料图片)
问题描述:
# RuntimeError: Error(s) in loading state_dict for Fusion_Generator: size mismatch for fg_decoder.0.weight: copying a param with shape torch.Size([4096, 1024]),g_decoder.0.weight: copying a param with shape torch.Size([4096, 1024]...
出现两个参数的不匹配。
具体内容如下:
model = GAN(opt)loaded = torch.load(model_path)assert (opt.epoch == loaded["epoch"])model.load_state_dict(loaded["model"], strict=False) # 这里爆出上述Error,定位到下面的函数def load_state_dict(self, pretrained_dict, strict=False): for k in pretrained_dict: if k ... ... ... elif k == "generator": self.generator.load_state_dict(pretrained_dict[k], strict=strict) # 这里虽然strict传入的是False,忽略不匹配参数,仍有上述问题 elif k ... ...
在参考 这里后,如果只是pop()掉fg_decoder.0.weight和bg_decoder.0.weight后,会有新的问题出现(一般问题通过pop掉能解决问题),即
KeyError: "fg_decoder.0.weight,bg_decoder.0.weight"
即不能识别上述两个键值,这时可以通过打印模型参数具体内容查看:
def load_state_dict(self, pretrained_dict, strict=False): for k in pretrained_dict: if k ... ... ... elif k == "fusion_generator": for u in pretrained_dict[k].keys(): print(u," ",pretrained_dict[k][u]) self.fusion_generator.load_state_dict(pretrained_dict[k], strict=strict) # elif k ... ...
打印结果
fg_decoder.0.weight xxxxxx tensor([0., 0., 0., ..., 0., 0., 0.], device="cuda:0")
fg_decoder.0.bias xxxxxx tensor([0., 0., 0., ..., 0., 0., 0.], device="cuda:0") fg_decoder.1.weight xxxxxx tensor([1.0362, 0.9969, 0.9892, ..., 0.9939, 1.0122, 1.0190], device="cuda:0") fg_decoder.1.bias xxxxxx tensor([0., 0., 0., ..., 0., 0., 0.], device="cuda:0") fg_decoder.1.running_mean xxxxxx tensor([ 0.1915, -0.5510, 0.5370, ..., -0.1265, 0.8344, 1.4391], device="cuda:0") fg_decoder.1.running_var xxxxxx tensor([0.9402, 0.7382, 0.0167, ..., 0.3988, 0.1081, 0.4470], device="cuda:0") fg_decoder.1.num_batches_tracked xxxxxx tensor(3880, device="cuda:0") fg_decoder.3.weight xxxxxx tensor([[ 0.0211, -0.0072, 0.0030, ..., 0.0090, 0.0120, 0.0043], [ 0.0221, -0.0320, -0.0050, ..., 0.0239, 0.0035, 0.0438], [ 0.0246, -0.0091, 0.0146, ..., -0.0003, 0.0257, -0.0025], ..., [ 0.0077, -0.0209, -0.0017, ..., 0.0135, 0.0418, 0.0052], [ 0.0109, 0.0066, -0.0093, ..., 0.0048, -0.0019, -0.0381], [ 0.0145, -0.0165, 0.0095, ..., 0.0252, -0.0184, 0.0178]], device="cuda:0")....
bg_decoder.0.weight xxxxxx tensor([0., 0., 0., ..., 0., 0., 0.], device="cuda:0")....
可以发现fg_decoder.0.weight和bg_decoder.0.weight都在里面,并且对应为pretrained_dict[k][u]
所以!!!在有序字典中将对应报错内容删除后,就能解决size mismatch问题
def load_state_dict(self, pretrained_dict, strict=False): for k in pretrained_dict: if k ... ... ... elif k == "fusion_generator": for u in list(pretrained_dict[k].keys()):# (小坑)加list防止同时读写报错 if u == "fg_decoder.0.weight" or u == "bg_decoder.0.weight": pretrained_dict[k].pop(u) self.fusion_generator.load_state_dict(pretrained_dict[k], strict=strict) # elif k ... ...
成功解决问题~
关键词:
[责任编辑:xwzkw]
相关阅读
- (2023-08-26)strict=False 但还是size mismatch 的解决办法
- (2023-08-26)“煤炭一哥”中国神华上半年净利润同比下滑19.2% 预计后市煤价仍会下行
- (2023-08-26)2-0!进攻打懵对手,冯彦哲黄东萍首战告捷,下轮战东道主王牌!
- (2023-08-26)扶持个体工商户发展 我省推出政策“大礼包”
- (2023-08-26)台风“苏拉”将在吕宋岛东北部洋面徘徊,“达维”向西北方向移动
- (2023-08-26)成都车展:比亚迪方程豹豹5开启盲订,售价30-40万之间
- (2023-08-26)登高临峻 眺峰怀远——《艺术里的奥林匹克》带您感受国画《庐山高》中大自然的伟大壮阔
- (2023-08-26)西安3条地铁工程放榜,五大建筑央企+陕西建工中标
- (2023-08-26)海珠这3个公交站点下周五起改名
- (2023-08-26)南山赏菊正当时
- (2023-08-26)太阳表面出现巨大的黑子:或释放高能爆炸,导致地球电网瘫痪
- (2023-08-26)交通运输部:7月交通运输各主要指标均实现正增长
- (2023-08-26)本周盘点(8.21-8.25):东易日盛周跌4.23%,主力资金合计净流出310.93万元
- (2023-08-26)浪潮信息触及跌停
- (2023-08-26)*ST西发(000752):该股换手率大于8%(08-25)
- (2023-08-26)醴陵公安集中销毁60余台赌博机
- (2023-08-26)比亚迪宋L在成都车展首发亮相:搭载“云辇C”
- (2023-08-26)聚力优秀师资力量,中公教育“谱写”新篇章
- (2023-08-26)交通运输部:7月交通运输各主要指标均实现正增长
- (2023-08-26)“让我来爱护你”上海首批762间职工工间休息室建成
- (2023-08-26)证监会:研究适当延长A股市场、交易所债券市场交易时间
- (2023-08-26)深交所丁晓东:紧锣密鼓地做好大宗交易纳入互联互通的准备工作
- (2023-08-26)暖心!女生地铁给大爷让座被赠蓝莓,随即回赠芒果
- (2023-08-26)一场秋雨一场凉!北京明天一早转晴,双休日降温雨再来
- (2023-08-26)五周年演讲暨真我 GT5 新品发布会
- (2023-08-26)中原集团回应“深圳中原拖欠员工佣金”:不具垫付能力
- (2023-08-26)国内油价明晚或将上涨:未超50元/吨不作调整
- (2023-08-26)前7月财政收支双增长!“钱袋子”流向社保就业和卫生健康
- (2023-08-26)羊了个羊卡无限道具bug教程
- (2023-08-26)精准释放刚性和改善性需求,湖南召开房地产平稳健康和安全运行工作推进会