解决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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
解决python中画图时x,y轴名称出现中文乱码的问题
Jan 29 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
Python实现分数序列求和
Feb 25 Python
Python猜数字算法题详解
Mar 01 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
Python偏函数实现原理及应用
Nov 20 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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实现将GB编码转换为UTF8
2006/11/25 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python reduce 函数使用详解
2017/12/05 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
linux面试题参考答案(10)
2016/10/26 面试题
自荐信如何“自荐”
2013/10/24 职场文书
大学生秋游活动方案
2014/02/17 职场文书
党员公开承诺书
2014/03/25 职场文书
教师个人自我评价范文
2014/04/13 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
公司车辆管理制度
2015/08/04 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python