解决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从sqlite读取并显示数据的方法
May 08 Python
python处理Excel xlrd的简单使用
Sep 12 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
对python的文件内注释 help注释方法
May 23 Python
使用python3实现操作串口详解
Jan 01 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
Python函数基本使用原理详解
Mar 19 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
pycharm debug 断点调试心得分享
Apr 16 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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+MySQL的聊天室设计
2006/10/09 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
js window.open弹出新的网页窗口
2014/01/16 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
js鼠标移动时禁止选中文字
2017/02/19 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
js判断节假日实例代码
2017/12/27 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
营销总经理的岗位职责
2013/12/15 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
模特大赛策划方案
2014/05/28 职场文书
反对邪教标语
2014/06/30 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
python 实现图片特效处理
2022/04/03 Python