解决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 08 Python
python之import机制详解
Jul 03 Python
深入理解python中的atexit模块
Mar 07 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
Python json模块dumps、loads操作示例
Sep 06 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
pygame实现打字游戏
Feb 19 Python
python生成器用法实例详解
Nov 22 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
python实现图像高斯金字塔的示例代码
Dec 11 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 self与$this的详解
2013/06/08 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
Python探索之Metaclass初步了解
2017/10/28 Python
django中的setting最佳配置小结
2017/11/21 Python
Python实现ping指定IP的示例
2018/06/04 Python
Python Series从0开始索引的方法
2018/11/06 Python
Django框架模板介绍
2019/01/15 Python
Python新手如何理解循环加载模块
2020/05/29 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
Java面试题汇总
2015/12/06 面试题
医大实习自我鉴定
2013/12/07 职场文书
2014年教师节寄语
2014/04/03 职场文书
新闻报道策划方案
2014/06/11 职场文书
2014年教育工作总结
2014/11/26 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫