《动手学深度学习》(PyTorch版)代码注释 - 17 【GPU_computing】

说明

本博客代码来自开源项目:《动手学深度学习》(PyTorch版)
并且在博主学习的理解上对代码进行了大量注释,方便理解各个函数的原理和用途

配置环境

使用环境:python3.8
平台:Windows10
IDE:PyCharm

此节说明

此节对应书本上4.6节
此节功能为:GPU计算
由于次节相对容易理解,代码注释量较少

代码

# 本书链接https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter03_DL-basics/3.8_mlp
# 4.6 GPU计算
#注释:黄文俊
#邮箱:hurri_cane@qq.com

import torch
from torch import nn

# 用torch.cuda.is_available()查看GPU是否可用:
print(torch.cuda.is_available())

# 查看GPU数量:
print(torch.cuda.device_count())

# 查看当前GPU索引号,索引号从0开始:
print(torch.cuda.current_device())

# 根据索引号查看GPU名字:
print(torch.cuda.get_device_name(0))

# 默认情况下,Tensor会被存在内存上。因此,之前我们每次打印Tensor的时候看不到GPU相关标识。
x = torch.tensor([1, 2, 3])
print(x)
# 使用.cuda()可以将CPU上的Tensor转换(复制)到GPU上。如果有多块GPU,我们用.cuda(i)来表示第i块GPU及相应的显存(i从0开始)且cuda(0)和cuda()等价。
x = x.cuda(0)
print(x)
# 通过Tensor的device属性来查看该Tensor所在的设备。
print(x.device)

# 我们可以直接在创建的时候就指定设备
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

x = torch.tensor([1, 2, 3], device=device)
# or
# x = torch.tensor([1, 2, 3]).to(device)
print(x)

# 如果对在GPU上的数据进行运算,那么结果还是存放在GPU上。
y = x**2
print(y)

# 需要注意的是,存储在不同位置中的数据是不可以直接进行计算的。
# 即存放在CPU上的数据不可以直接与存放在GPU上的数据进行运算,位于不同GPU上的数据也是不能直接进行计算的
# 以此案例为例,以下代码会报错:
# z = y + x.cpu()

# 4.6.3 模型的GPU计算

net = nn.Linear(3, 1)
print(list(net.parameters())[0].device)     #输出为CPU

# 可见模型在CPU上,通过下面代码将其转换到GPU上:
net.cuda()
print(list(net.parameters())[0].device)     #输出cuda:0

# 同样的,我么需要保证模型输入的Tensor和模型都在同一设备上,否则会报错。
x = torch.rand(2,3).cuda()
print(net(x))

print("*"*30)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hurri_cane

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值