pytorch to_device遇到数据迁移不成功的问题
pytorch中使用to(device)后数据未迁移成功
问题描述
调试模型时遇到报错:
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking arugment for argument index in method wrapper_gather)
内容说是要进行运算的两个数据没有在同一个设备上,在cpu和cuda:0两个设备上。
首先可以推断是有个别数据未迁移到同一设备上,这里我选择cuda:0作为实验的设备,以加快训练速度。
错误代码
主调代码:
print(f"self.device:{self.device}") # cuda:0
event_ix = torch.LongTensor(self.lm.get_events_in_sentence(relpair))
event_ix.to(self.device) # 数据迁移到GPU
print(f"exp_HGRU event_ix.device:{event_ix.device}")
time_anchor = self.timeAnchorModel(s, s_a_mask, event_ix, self.device)
被调代码:
event_1_ix, event_2_ix = event_ix.split(1, dim=-1)
print(f"event_1_ix.device:{event_1_ix.device}\nevent_2_ix.device:{event_2_ix.device}") # cpu cpu
event_1 = torch.gather(sequence_output, dim=1,index=event_1_ix.expand(batch_size, hidden_size).unsqueeze(dim=1)) # index处发生报错
event_2 = torch.gather(sequence_output, dim=1,index=event_2_ix.expand(batch_size, hidden_size).unsqueeze(dim=1))
我把device通过参数传进来了,但是event_1_ix.device和event_2_ix.device仍然是cpu
解决方法
其实很简单,就是data.to(device)后需要赋值给另一变量,可以是data本身,否者无法真正实现迁移。
可能是因为简单,网上没有针对性的解决方法,对pytorch略懂皮毛的人来说,有些简单的点,却最磨人。
正确代码
event_ix = torch.LongTensor(self.lm.get_events_in_sentence(relpair)).to(self.device)
或者
event_ix = torch.LongTensor(self.lm.get_events_in_sentence(relpair))
event_ix = event_ix.to(self.device)
!data = data.to(device) ------ 需要data来承接
pytorch to_device遇到数据迁移不成功的问题相关推荐
- 最新Linux版本 jira6.3.6安装汉化破解以及数据迁移
序言: JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷.任务.需求.改进等.JIRA采用J2EE技术,能够跨平台部署.它 ...
- Sequelize 数据迁移
Sequelize是比较流行的ORM框架.什么是ORM框架呢?小白偷偷查了了一下手机.得到这样的定义. ORM 是「对象关系映射」的翻译,英语全称为Object Relational Mapping, ...
- FreeBSD硬盘分区和数据迁移相关资料
从网上摘录的部分FreeBSD硬盘分区和数据迁移相关资料: HOWTO: Move FreeBSD to a new hard disk FreeBSD 数据迁移方法 FreeBSD的硬盘分区策略 ( ...
- Django 应用分库,数据迁移成功,数据库没有生成表
Django 应用分库,数据迁移成功,数据库没有生成表 背景:不同应用对应不同数据库,在迁移数据成功后,数据库没有生成表 Django 官网:https://docs.djangoproject.co ...
- 一部分 数据 迁移_超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源
加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...
- Django数据迁移成功但是数据库未创建数据表
Django的数据迁移问题 执行命令: python manage.py makemigrations appnamepython manage.py migrate appname 但是执行命令后二 ...
- svn的代码提交到git服务器_svn服务器代码仓库,数据迁移到git仓库
svn服务器代码仓库,数据迁移到git仓库 1.安装svn [root@tomcat01 ~]# yum install subversion -y 2.初始化仓库 [root@tomcat02 ~] ...
- 记一次大规模数据迁移和加密
公司的核心业务合作伙伴淘宝网,最近出现泄漏用户信息的现象,找了好久找不到根源,于是乎,淘宝那边决定对所有敏感数据进行加密,从出口和入口都走密文,于是乎,我们的工作量就来了. 我们的一个底单数据库,存储 ...
- TFS数据迁移之sync_by_blk
本文档记录了两套tfs 2.2.16系统之间的数据迁移过程. Source环境介绍: Tfs 主nameserver: 192.168.1.225/24 (vip 229) Tfs 从nameserv ...
最新文章
- KNN算法与Kd树(转载+代码详细解释)
- Java 概述和编程基础
- Effective C++学习笔记之copy构造函数和default函数和copy赋值函数(operator=)
- Tomcat核心架构和启动流程解析
- 网页采集时,常用的几种正则表达式
- ktv服务器管理系统,KTV收银管理系统.doc
- 强化狼群等级制度的灰狼优化算法-附代码
- SAP中与物料BOM有关的表关联
- oracle odac 配置,.Net項目中通過ODAC方式鏈接Oracle數據庫相關配置
- 2023年西安交通大学管理学院MPAcc提前批面试网报通知
- 谭浩强《C语言》学习1
- 2021年最新ABAQUS复合材料建模仿真与应用专题培训
- Android Studio 支持安卓手机投屏
- Batch Normation
- gbase 8d客户端配置文件
- JAVA电子竞技赛事管理系统计算机毕业设计Mybatis+系统+数据库+调试部署
- U盘版的DOS启动盘制作
- 7-11正式进军柬埔寨;2021年全球乳业排行榜公布;麦咖啡跨界多芬推出新品 | 食品饮料新品...
- leetcode/nowcoder-huawei-5-排列组合
- Git分支管理与标签管理(the last)