解决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字符串详细介绍
May 09 Python
python创建临时文件夹的方法
Jul 06 Python
浅谈Python的异常处理
Jun 19 Python
python 统计代码行数简单实例
May 04 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
python定时关机小脚本
Jun 20 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
python实现数字炸弹游戏
Jul 17 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 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遍历目录viewDir函数
2009/12/15 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
浅谈js中的bind
2019/03/18 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
python简单猜数游戏实例
2015/07/09 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python requests证书问题解决
2019/09/05 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
如何基于python操作excel并获取内容
2019/12/24 Python
python将数据插入数据库的代码分享
2020/08/16 Python
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
高一学生评语大全
2014/04/25 职场文书
完整版商业计划书
2014/09/15 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书