解决pytorch下出现multi-target not supported at的一种可能原因


Posted in Python onFebruary 06, 2021

在使用交叉熵损失函数的时候,target的形状应该是和label的形状一致或者是只有batchsize这一个维度的。

如果target是这样的【batchszie,1】就会出现上述的错误。

改一下试试,用squeeze()函数降低纬度,

如果不知道squeeze怎么用的,

可以参考这篇文章。pytorch下的unsqueeze和squeeze用法

这只是一种可能的原因。

补充:pytorch使用中遇到的问题

1. load模型参数文件时,提示torch.cuda.is_available() is False。

按照pytorch官方网页又安装了一次pytorch,而不是直接使用清华源,执行pip install torch,暂时不知道为什么。

2. 使用CrossEntropyLoss时,要求第一个参数为网络输出值,FloatTensor类型,第二个参数为目标值,LongTensor类型。否则

需要在数据读取的迭代其中把target的类型转换为int64位的:target = target.astype(np.int64),这样,输出的target类型为torch.cuda.LongTensor。(或者在使用前使用Tensor.type(torch.LongTensor)进行转换)。

3.

RuntimeError: multi-target not supported at /pytorch/torch/lib/THCUNN/generic/ClassNLLCriterion.cu
loss += F.cross_entropy( scores, captions )

出错原因:

scores, captions的维度与F.cross_entropy()函数要求的维度不匹配,

例如出错的维度为scores=[batch, vocab_size], captions=[batch, 1]

解决:

loss += F.cross_entropy( scores, captions.squeeze() )

注,这个scores必须是N*C维,C指类别数。

4. pytorch训练过程中使用大量的CPU资源

当我使用pycharm运行 (https://github.com/Joyce94/cnn-text-classification-pytorch ) pytorch程序的时候,在Linux服务器上会开启多个进程,占用服务器的大量的CPU,在windows10上运行此程序的时候,本机的CPU和内存会被吃光,是因为在train.py中有大量的数据训练处理,会开启多个进程,占用大量的CPU和进程。

本机window10

解决pytorch下出现multi-target not supported at的一种可能原因

linux服务器开启了多个进程

解决pytorch下出现multi-target not supported at的一种可能原因

Linux服务器占用大量CPU

解决pytorch下出现multi-target not supported at的一种可能原因

在pytorch中提供了(http://pytorch.org/docs/master/multiprocessing.html)muliprocessing多进程管理,其中有Pool进程池、Process()等对进程进行管理,可能是我使用的方式不对,反正是没有什么效果。

然而最简单的也是最好的解决办法 :

torch.set_num_threads(int thread) ,可以很好的解决windows问题,参考(http://pytorch.org/docs/master/torch.html#parallelism) 然而,在linux服务器上还是有一些问题的,export OMP_NUM_THREADS = 1 可以解决Linux问题。

经验证:export OMP_NUM_THREADS=1确实在pycaffe/pytorch中可以有效降低CPU使用率且提高程序运行速度,考虑可能是程序并不需要这么大的计算量,但是开了很多线程并行进行相同的计算,最后还需要同步结果,浪费了大量的计算量。

5. 在pytorch框架下编译模块的时候遇到 in <module>

raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.

解决:pytorch版本与其他库的版本不匹配。我当时装的是1.0.0,降低版本到0.4.0后问题解决。

6.pytorch设置GPU,os.environ['CUDA_VISIBLE_DEVICES']='X'要放在主程序的最前端,否则设置GPU可能无效。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
python多线程threading.Lock锁用法实例
Nov 01 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
python datetime中strptime用法详解
Aug 29 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
Python如何将模块打包并发布
Aug 30 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
windows系统Tensorflow2.x简单安装记录(图文)
Jan 18 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 #Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 #Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 #Python
Python第三方库安装缓慢的解决方法
Feb 06 #Python
python中threading和queue库实现多线程编程
Feb 06 #Python
Python3爬虫ChromeDriver的安装实例
Feb 06 #Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 #Python
You might like
PHP 中的一些经验积累
2006/10/09 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
小议Javascript中的this指针
2010/03/18 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
浅析Python中的多重继承
2015/04/28 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
结婚周年感言
2014/02/24 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
暑假学习心得体会
2014/09/02 职场文书