pytorch 如何将张量、类实例、函数放到GPU上
调用“.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上相关推荐
- 模型放到gpu上训练
把模型放到gpu上训练只需要设置三个地方即可: (1) 指定训练设备device: device = torch.device('cuda' if torch.cuda.is_available() ...
- pytorch张量相乘matmul函数
主要参考PyTorch入门笔记-张量相乘matmul函数02 - 腾讯云开发者社区-腾讯云 (tencent.com) 我自己认为容易记住的点: 1.维数不同时,扩张的是不会相乘的那个维度.例如:一个 ...
- Caffe 理解blob之SyncedMen类同步CPU和GPU
Caffe中文社区给的官网译本说到: 数据既可存储在CPU上,也可以存储在GPU上,因此有两种数据访问方式: 静态方式,不改变数值:动态方式,改变数值. SysncedMem类同步CPU和GPU上的数 ...
- C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...
- python函数实例与类实例_python – 在类和实例上表现不同的函数
好问题!您使用描述符可以轻松完成您所寻求的内容. Descriptors是实现描述符协议的Python对象,通常以__get __()开头. 它们主要存在于不同类中的类属性.在访问它们时,将调用它们的 ...
- python 类函数 实例函数_python_30期【实例函数 类里面的函数】
# 实例函数 类里面的函数------------>常用的 方法 # class GirlFriend(): # height = 160 # money = 200000 # name = & ...
- python 类函数 实例函数,python_30期【实例函数 类里面的函数】
# 实例函数 类里面的函数------------>常用的 方法 # class GirlFriend(): # height = 160 # money = 200000 # name = & ...
- Qt的inherits()函数判断qt控件是否为某个类实例
qDebug() << "inherits:" <<win->inherits("CommandFrame"); 如果是true, ...
- pytorch图像和张量的相互转换_[Pytorch]Pytorch的tensor变量类型转换
原文:https://blog.csdn.net/hustchenze/article/details/79154139 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩 ...
最新文章
- Java面试人事篇(二)
- print格式化输出,以及使用format控制
- SAP Spartacus如何创建自定义route页面
- java字符串是不是整数的函数_java判断字符串是否为整数的方法
- byte java byte_详解java中的byte类型
- 数据库的持续集成和版本控制[转自INFOQ]
- 转载 : JSP取得绝对路径
- Android 中进程的级别以及 Service 的优先级
- 【项目实训】微信公众号获取用户openid
- Hourglass网络的理解和代码分析
- 为表的添加中文属性时出现的Incorrect string value: '\xE7\x9A\x84\xE6\xB1\xEA...
- 一只喵的西行记-3 唱斑马斑马的黑马
- 使用七牛云进行存储图片并返回URL
- idea和eclipse哪个更好用?为什么呢?
- 火锅店软件需求(附带完成过程)
- linux内核黑名单,如何将内核模块列入黑名单?
- 计算机网络中计算机资源管理器,资源管理器
- JavaWeb篇之一——使用原生JDBC对数据库进行操作
- 微博轻量级RPC框架Motan
- 256色图像不一定是灰度图像
热门文章
- 光敏电阻控制led亮度程序_Arduino动手做(2)光敏电阻模块
- java知识点博客园_JAVA基础知识回顾
- win10电脑桌面透明便签_Windows xp电脑便签在哪里找?XP系统怎么建桌面便签
- php js 二级联动_PHP+ajax实现二级联动菜单功能示例
- html代码放进json数据,用json数据填充html表
- linux 系统对信号的处理,Linux下的信号处理函数总结
- linux java 选择题_java面试题:Linux
- c foreach循环_C ++中的foreach循环
- 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
- java while循环_Java while循环