调用“.cuda()”函数,将tensor从GPU中取回到CPU中,只需调用“.cpu()”即可

直接看代码:

import torch
import torch.nn as nn
import copyclass MyClass(nn.Module):def __init__(self,para1,para2):super(MyClass,self).__init__()self.attr1 = para1self.attr2 = para2##定义函数self.func1 = nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,padding=1)self.func2 = nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, padding=1)self.func3 = nn.Sequential(nn.Conv2d(64,64,3,padding=1),nn.Conv2d(64,64,3,padding=1),nn.MaxPool2d(kernel_size=2,stride=2),nn.Sigmoid())def forward1(self,inputs):print('forward1')out = self.func1(inputs)out = self.func2(out)out = self.func3(out)return outdef forward2(self,inputs):print('forward2')out = self.func1(inputs)out = self.func2(out)out = self.func3(out)## 定义函数conv = nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, padding=1)out = conv(out)return outdef function_1(self,input):print('function_1')conv = nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,padding=1).cuda()return conv(input)def function_2(self,input):print('function_2')conv = nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,padding=1)return conv(input)def function1(input):conv = nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,padding=1).cuda()return conv(input)def function2(input):conv = nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,padding=1)return conv(input)if __name__ == "__main__":# 将张量放入gpuinput = torch.empty((10,3,256,256),dtype=torch.float32).cuda()## 将类对象放入gpu##两种方式均可,推荐方式2## 但是这两种方法都只能把__init__中的self的属性、函数放到cuda上,不能把其他函数放到cuda上##方式1myclass1 = MyClass(para1=1,para2=2)myclass1.cuda()##方式2myclass2 = MyClass(para1=1,para2=2).cuda()## 测试out1 =  myclass2.forward1(input)#不会报错# out2 = myclass2.forward2(input)#会报错# out3 =  myclass2.func1(input)#不会报错# out4 = myclass2.func2(input)#会报错# 将独立函数放入gpu ## 会报错# out5 = function1(input)#不会报错# out6 = function2(input)#会报错

通过实验证明,难以直接将自定义的独立的函数放到GPU中。

在将类实例放到GPU上时,只会将__init__中的有self前缀的属性及函数放到GPU上,对于其他的函数无作用。

大家如果遇到这种情况会怎么处理?

pytorch 如何将张量、类实例、函数放到GPU上相关推荐

  1. 模型放到gpu上训练

    把模型放到gpu上训练只需要设置三个地方即可: (1) 指定训练设备device: device = torch.device('cuda' if torch.cuda.is_available() ...

  2. pytorch张量相乘matmul函数

    主要参考PyTorch入门笔记-张量相乘matmul函数02 - 腾讯云开发者社区-腾讯云 (tencent.com) 我自己认为容易记住的点: 1.维数不同时,扩张的是不会相乘的那个维度.例如:一个 ...

  3. Caffe 理解blob之SyncedMen类同步CPU和GPU

    Caffe中文社区给的官网译本说到: 数据既可存储在CPU上,也可以存储在GPU上,因此有两种数据访问方式: 静态方式,不改变数值:动态方式,改变数值. SysncedMem类同步CPU和GPU上的数 ...

  4. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  5. python函数实例与类实例_python – 在类和实例上表现不同的函数

    好问题!您使用描述符可以轻松完成您所寻求的内容. Descriptors是实现描述符协议的Python对象,通常以__get __()开头. 它们主要存在于不同类中的类属性.在访问它们时,将调用它们的 ...

  6. python 类函数 实例函数_python_30期【实例函数 类里面的函数】

    # 实例函数 类里面的函数------------>常用的 方法 # class GirlFriend(): # height = 160 # money = 200000 # name = & ...

  7. python 类函数 实例函数,python_30期【实例函数 类里面的函数】

    # 实例函数 类里面的函数------------>常用的 方法 # class GirlFriend(): # height = 160 # money = 200000 # name = & ...

  8. Qt的inherits()函数判断qt控件是否为某个类实例

    qDebug() << "inherits:" <<win->inherits("CommandFrame"); 如果是true, ...

  9. pytorch图像和张量的相互转换_[Pytorch]Pytorch的tensor变量类型转换

    原文:https://blog.csdn.net/hustchenze/article/details/79154139 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩 ...

最新文章

  1. Java面试人事篇(二)
  2. print格式化输出,以及使用format控制
  3. SAP Spartacus如何创建自定义route页面
  4. java字符串是不是整数的函数_java判断字符串是否为整数的方法
  5. byte java byte_详解java中的byte类型
  6. 数据库的持续集成和版本控制[转自INFOQ]
  7. 转载 : JSP取得绝对路径
  8. Android 中进程的级别以及 Service 的优先级
  9. 【项目实训】微信公众号获取用户openid
  10. Hourglass网络的理解和代码分析
  11. 为表的添加中文属性时出现的Incorrect string value: '\xE7\x9A\x84\xE6\xB1\xEA...
  12. 一只喵的西行记-3 唱斑马斑马的黑马
  13. 使用七牛云进行存储图片并返回URL
  14. idea和eclipse哪个更好用?为什么呢?
  15. 火锅店软件需求(附带完成过程)
  16. linux内核黑名单,如何将内核模块列入黑名单?
  17. 计算机网络中计算机资源管理器,资源管理器
  18. JavaWeb篇之一——使用原生JDBC对数据库进行操作
  19. 微博轻量级RPC框架Motan
  20. 256色图像不一定是灰度图像

热门文章

  1. 光敏电阻控制led亮度程序_Arduino动手做(2)光敏电阻模块
  2. java知识点博客园_JAVA基础知识回顾
  3. win10电脑桌面透明便签_Windows xp电脑便签在哪里找?XP系统怎么建桌面便签
  4. php js 二级联动_PHP+ajax实现二级联动菜单功能示例
  5. html代码放进json数据,用json数据填充html表
  6. linux 系统对信号的处理,Linux下的信号处理函数总结
  7. linux java 选择题_java面试题:Linux
  8. c foreach循环_C ++中的foreach循环
  9. 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
  10. java while循环_Java while循环