解决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 29 Python
Python自定义类的数组排序实现代码
Aug 28 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
Python如何将装饰器定义为类
Jul 30 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
python安装scipy的方法步骤
2019/06/26 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
python 瀑布线指标编写实例
2020/06/03 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
求职自荐书范文
2013/12/04 职场文书
个人党性剖析材料
2014/02/03 职场文书
交通安全寄语大全
2014/04/08 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
企业文化学习心得体会
2016/01/21 职场文书
Python中常见的导入方式总结
2021/05/06 Python
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang