解决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中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
在Python中使用全局日志时需要注意的问题
May 06 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
Python实现插入排序和选择排序的方法
May 12 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
学点简单的Django之第一个Django程序的实现
Feb 24 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 常用函数库和一些实用小技巧
2009/01/01 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
js模糊查询实例分享
2016/12/26 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
Python内置函数之filter map reduce介绍
2014/11/30 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
python 反向输出字符串的方法
2018/07/16 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Python切图九宫格的实现方法
2019/10/10 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
学院书画协会部门岗位职责
2013/12/01 职场文书
寒假思想汇报
2014/01/10 职场文书
房屋租赁协议书
2014/04/10 职场文书
勤俭节约倡议书
2014/04/14 职场文书
汽车专业求职信
2014/06/05 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server