解决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基于socket实现网络广播的方法
Apr 29 Python
CentOS6.5设置Django开发环境
Oct 13 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
Linux下多个Python版本安装教程
Aug 15 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
python 格式化输出百分号的方法
Jan 20 Python
django做form表单的数据验证过程详解
Jul 26 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
Elasticsearch 索引操作和增删改查
Apr 19 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
Vue动态创建注册component的实例代码
2019/06/14 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
使用python分析git log日志示例
2014/02/27 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Pycharm更换python解释器的方法
2018/10/29 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python新手学习raise用法
2020/06/03 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
加强作风建设演讲稿
2014/10/24 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang