解决pytorch 损失函数中输入输出不匹配的问题


Posted in Python onJune 05, 2021

一、pytorch 损失函数中输入输出不匹配问题

File "C:\Users\Rain\AppData\Local\Programs\Python\Anaconda.3.5.1\envs\python35\python35\lib\site-packages\torch\nn\modules\module.py", line 491, in __call__  result = self.forward(*input, **kwargs)

File "C:\Users\Rain\AppData\Local\Programs\Python\Anaconda.3.5.1\envs\python35\python35\lib\site-packages\torch\nn\modules\loss.py", line 500, in forward reduce=self.reduce)
 
File "C:\Users\Rain\AppData\Local\Programs\Python\Anaconda.3.5.1\envs\python35\python35\lib\site-packages\torch\nn\functional.py", line 1514, in binary_cross_entropy_with_logits
 
raise ValueError("Target size ({}) must be the same as input size ({})".format(target.size(), input.size()))
 
ValueError: Target size (torch.Size([32])) must be the same as input size (torch.Size([32,2]))

原因

input 和 target 尺寸不匹配

解决方案:

将target转为onehot

例如:

one_hot = torch.nn.functional.one_hot(masks, num_classes=args.num_classes)

二、Pytorch遇到权重不匹配的问题

最近,楼主在pytorch微调模型时遇到

size mismatch for fc.weight: copying a param with shape torch.Size([1000, 2048]) from checkpoint, the shape in current model is torch.Size([2, 2048]).

size mismatch for fc.bias: copying a param with shape torch.Size([1000]) from checkpoint, the shape in current model is torch.Size([2]).

这个是因为楼主下载的预训练模型中的全连接层是1000类别的,而楼主本人的类别只有2类,所以会报不匹配的错误

解决方案:

从报错信息可以看出,是fc层的权重参数不匹配,那我们只要不load 这一层的参数就可以了。

net = se_resnet50(num_classes=2)
pretrained_dict = torch.load("./senet/seresnet50-60a8950a85b2b.pkl")
model_dict = net.state_dict()
# 重新制作预训练的权重,主要是减去参数不匹配的层,楼主这边层名为“fc”
pretrained_dict = {k: v for k, v in pretrained_dict.items() if (k in model_dict and 'fc' not in k)}
# 更新权重
model_dict.update(pretrained_dict)
net.load_state_dict(model_dict)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python导入模块时遇到的错误分析
Aug 30 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
Python定义函数功能与用法实例详解
Apr 08 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
3种python调用其他脚本的方法
Jan 06 Python
Python语言异常处理测试过程解析
Jan 08 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
python中pdb模块实例用法
Jan 15 Python
变长双向rnn的正确使用姿势教学
May 31 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 #Python
Pytorch中的学习率衰减及其用法详解
Jun 05 #Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 #Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 #Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
You might like
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
js数组去重的hash方法
2016/12/22 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
从零学python系列之从文件读取和保存数据
2014/05/23 Python
编程语言Python的发展史
2014/09/26 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
python3.x上post发送json数据
2018/03/04 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
使用django自带的user做外键的方法
2020/11/30 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
仓库理货员岗位职责
2013/12/18 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2016特色励志班级口号
2015/12/24 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android