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遇到数据迁移不成功的问题相关推荐

  1. 最新Linux版本 jira6.3.6安装汉化破解以及数据迁移

    序言: JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷.任务.需求.改进等.JIRA采用J2EE技术,能够跨平台部署.它 ...

  2. Sequelize 数据迁移

    Sequelize是比较流行的ORM框架.什么是ORM框架呢?小白偷偷查了了一下手机.得到这样的定义. ORM 是「对象关系映射」的翻译,英语全称为Object Relational Mapping, ...

  3. FreeBSD硬盘分区和数据迁移相关资料

    从网上摘录的部分FreeBSD硬盘分区和数据迁移相关资料: HOWTO: Move FreeBSD to a new hard disk FreeBSD 数据迁移方法 FreeBSD的硬盘分区策略 ( ...

  4. Django 应用分库,数据迁移成功,数据库没有生成表

    Django 应用分库,数据迁移成功,数据库没有生成表 背景:不同应用对应不同数据库,在迁移数据成功后,数据库没有生成表 Django 官网:https://docs.djangoproject.co ...

  5. 一部分 数据 迁移_超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  6. Django数据迁移成功但是数据库未创建数据表

    Django的数据迁移问题 执行命令: python manage.py makemigrations appnamepython manage.py migrate appname 但是执行命令后二 ...

  7. svn的代码提交到git服务器_svn服务器代码仓库,数据迁移到git仓库

    svn服务器代码仓库,数据迁移到git仓库 1.安装svn [root@tomcat01 ~]# yum install subversion -y 2.初始化仓库 [root@tomcat02 ~] ...

  8. 记一次大规模数据迁移和加密

    公司的核心业务合作伙伴淘宝网,最近出现泄漏用户信息的现象,找了好久找不到根源,于是乎,淘宝那边决定对所有敏感数据进行加密,从出口和入口都走密文,于是乎,我们的工作量就来了. 我们的一个底单数据库,存储 ...

  9. TFS数据迁移之sync_by_blk

    本文档记录了两套tfs 2.2.16系统之间的数据迁移过程. Source环境介绍: Tfs 主nameserver: 192.168.1.225/24 (vip 229) Tfs 从nameserv ...

最新文章

  1. KNN算法与Kd树(转载+代码详细解释)
  2. Java 概述和编程基础
  3. Effective C++学习笔记之copy构造函数和default函数和copy赋值函数(operator=)
  4. Tomcat核心架构和启动流程解析
  5. 网页采集时,常用的几种正则表达式
  6. ktv服务器管理系统,KTV收银管理系统.doc
  7. 强化狼群等级制度的灰狼优化算法-附代码
  8. SAP中与物料BOM有关的表关联
  9. oracle odac 配置,.Net項目中通過ODAC方式鏈接Oracle數據庫相關配置
  10. 2023年西安交通大学管理学院MPAcc提前批面试网报通知
  11. 谭浩强《C语言》学习1
  12. 2021年最新ABAQUS复合材料建模仿真与应用专题培训
  13. Android Studio 支持安卓手机投屏
  14. Batch Normation
  15. gbase 8d客户端配置文件
  16. JAVA电子竞技赛事管理系统计算机毕业设计Mybatis+系统+数据库+调试部署
  17. U盘版的DOS启动盘制作
  18. 7-11正式进军柬埔寨;2021年全球乳业排行榜公布;麦咖啡跨界多芬推出新品 | 食品饮料新品...
  19. leetcode/nowcoder-huawei-5-排列组合
  20. Git分支管理与标签管理(the last)

热门文章

  1. 【游戏逆向】《**明月刀》BUFF及技能预判
  2. excel 中如何设置误差线以及其意义
  3. 山东2016年高考高校理工科录取人数统计
  4. 看门狗性能软件测试,《看门狗:军团》PC版性能表现分析
  5. 做微信营销需要注意的几点
  6. 三张简图搞懂GBDT
  7. 虚幻引擎4中的实时GI技术
  8. c语言 __at定位编译报错,盈球新版 -官网
  9. 不能忍!花钱买网站VIP账号别人在用?
  10. 联想G40进入BIOS