解决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判断文本中消息重复次数的方法
Apr 27 Python
利用Python破解验证码实例详解
Dec 08 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Python绘制的二项分布概率图示例
Aug 22 Python
python验证身份证信息实例代码
May 06 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
python性能测量工具cProfile使用解析
Sep 26 Python
使用Pycharm分段执行代码
Apr 15 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
Python函数对象与闭包函数
Apr 13 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
jQuery 使用手册(七)
2009/09/23 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Python中 Lambda表达式全面解析
2016/11/28 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python装饰器深入学习
2018/04/06 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
python 变量初始化空列表的例子
2019/11/28 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
几个MySql的面试题
2013/04/22 面试题
玩具公司的创业计划书
2013/12/31 职场文书
上课玩手机检讨书
2014/02/08 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
六五普法宣传标语
2014/10/06 职场文书
新闻人物通讯稿
2014/10/09 职场文书
医生个人年度总结
2015/02/28 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
交通事故责任认定书
2015/08/06 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python