解决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标准库之循环器(itertools)介绍
Nov 25 Python
Python字符串详细介绍
May 09 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
Python绘制3d螺旋曲线图实例代码
Dec 20 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
Python csv模块使用方法代码实例
Aug 29 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
Python如何生成xml文件
Jun 04 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
详解Python高阶函数
Aug 15 Python
如何在pycharm中安装第三方包
Oct 27 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个人网站架设连环讲(二)
2006/10/09 PHP
PHP中str_replace函数使用小结
2008/10/11 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
小程序实现带年月选取效果的日历
2018/06/27 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
python多线程用法实例详解
2015/01/15 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
python实现学员管理系统
2019/02/26 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
Python同时迭代多个序列的方法
2020/07/28 Python
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
大学生写自荐信的技巧
2014/01/08 职场文书
学生期末评语大全
2014/04/30 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
python 详解turtle画爱心代码
2022/02/15 Python