解决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网络编程学习笔记(四):域名系统
Jun 09 Python
python实现连接mongodb的方法
May 08 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Django框架模板的使用方法示例
May 25 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
python 三元运算符使用解析
Sep 16 Python
python 通过视频url获取视频的宽高方式
Dec 10 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
用PHP制作静态网站的模板框架(四)
2006/10/09 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
Js中sort()方法的用法
2006/11/04 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python调用C/C++的方法解析
2020/08/05 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
高一历史教学反思
2014/01/13 职场文书
英语系毕业生求职信
2014/07/13 职场文书
六五普法宣传标语
2014/10/06 职场文书
关于长城的导游词
2015/01/30 职场文书
求职简历自我评价范文
2015/03/10 职场文书
公开致歉信
2019/06/24 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫