解决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算法学习之计数排序实例
Dec 18 Python
Python中的各种装饰器详解
Apr 11 Python
总结Python中逻辑运算符的使用
May 13 Python
python采集百度百科的方法
Jun 05 Python
用Python抢过年的火车票附源码
Dec 07 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python语言描述随机梯度下降法
Jan 04 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
python3获取当前目录的实现方法
Jul 29 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
python的数学算法函数及公式用法
Nov 18 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
使用 MySQL Date/Time 类型
2008/03/26 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
ECMAScript6--解构
2017/03/30 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
python排序方法实例分析
2015/04/30 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
房屋出租协议书范本(标准版)
2014/09/24 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书