PyTorch|在张量运算中使用GPU

pytorch在张量运算时允许我们在GPU上进行计算,我们可以采用这些方法将数据无缝的移入或移出GPU。

当我们进入GPU时,我们可以使用cuda()方法 ,当我们进入CPU时,我们可以使用**cpu()**方法。

同时,我们还可以使用to() 方法,去GPU的时候,我们写到**('cuda')** ,去CPU的时候,我们写到**('cpu')**。

在训练过程中,要想利用我们的GPU,有两个基本要求:

  • 数据必须移到GPU上

  • 网络必须移到GPU上

默认情况下,在创建PyTorch张量或PyTorch神经网络模块时,会在CPU上初始化相应的数据。具体来说,这些数据存在于CPU的内存中。

下面是一些实例:

复制代码
>>> import torch
>>> data=torch.tensor([1,2,3,4])>>> data.devicedevice(type='cpu')
>>> v1=data.to('cuda')>>> v1.devicedevice(type='cuda', index=0)>>> v2=data.cuda()>>> v2.devicedevice(type='cuda', index=0)
>>> v3=v2.to('cpu')>>> v3.devicedevice(type='cpu')>>> v4=v2.cpu()>>> v4.device

然而,代码需要在不同的设备都能运行,也就是在不修改代码的情况下在GPU上可以使用或者在只能使用CPU的设备上运行

例如,假设我们写的代码到处使用cuda()方法,然后,我们把代码交给一个没有GPU的用户,这样做是行不通的。

对此,我们可以这样处理:​​​​​​​

复制代码
device=torch.device("cuda" if torch.cuda.is_available() else "cpu")input=data.to(device)network=Network()net=network.to(device)

总结起来,在我们编写的代码中,尽量使用这种形式:​​​​​​​

复制代码
device=torch.device("cuda" if torch.cuda.is_available() else "cpu")***=***.to(device)
相关推荐
2301_815901971 天前
MySQL从库同步速度慢的硬件原因_分析磁盘性能与内存占用
jvm·数据库·python
2401_846339561 天前
SQL如何检测分组内是否存在满足条件的数据_EXISTS结合分组
jvm·数据库·python
iAm_Ike1 天前
Bootstrap中常用的文本颜色、背景颜色及边框色类
jvm·数据库·python
阿里云大数据AI技术1 天前
基于 MaxCompute Delta Table 实现 SCD Type 2:Time Travel 驱动的维度变更追踪方案
人工智能
m0_741481781 天前
CSS如何实现单选按钮自定义样式_利用伪元素隐藏默认UI
jvm·数据库·python
yexuhgu1 天前
CSS如何解决Bootstrap表格溢出问题_利用table-responsive容器
jvm·数据库·python
听麟1 天前
HarmonyOS 6.0+ PC端离线翻译工具开发实战:端侧AI模型集成与多格式内容翻译落地
人工智能·华为·harmonyos
2301_787312431 天前
SQL视图与存储过程有何区别_架构设计中的选择策略
jvm·数据库·python
Dxy12393102161 天前
Python如何处理树状分类数据
大数据·python·分类
a7963lin1 天前
C# 文件系统Filter Hook C#能否在用户模式下拦截文件系统调用
jvm·数据库·python