解决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中使用mongoengine操作MongoDB教程
Apr 24 Python
python读取word文档的方法
May 09 Python
pandas多级分组实现排序的方法
Apr 20 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
Python面向对象程序设计之类的定义与继承简单示例
Mar 18 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
Python之变量类型和if判断方式
May 05 Python
Python 字典中的所有方法及用法
Jun 10 Python
Python OpenCV形态学运算示例详解
Apr 07 Python
python中urllib包的网络请求教程
Apr 19 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使用数组依次替换字符串中匹配项
2016/01/08 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
phpwind放自动注册方法
2006/12/02 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
办公室文书岗位职责
2013/12/16 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
保证书格式范文
2014/04/28 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
python基础入门之字典和集合
2021/06/13 Python
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
Python数据结构之队列详解
2022/03/21 Python
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技