您的位置:首页 > 汽车 > 时评 > 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-18GPU

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-18GPU

2024/7/4 17:16:21 来源:https://blog.csdn.net/weixin_46560570/article/details/139884051  浏览:    关键词:动手学深度学习(Pytorch版)代码实践 -卷积神经网络-18GPU

18GPU

import torch
from torch import nn#使用CPU
torch.device('cpu')#使用GPU
#cuda:0和cuda是等价的
#是一个上下文管理器,用于在其上下文范围内临时设置默认CUDA设备
torch.cuda.device('cuda')#如果有多个GPU,torch.device(f'cuda:{i}'),表示使用第i块GPU(从0开始)
#是一个设备对象,用于在创建或移动张量时明确指定目标设备
torch.device('cuda:1')# 查询可用gpu的数量
print(torch.cuda.device_count())def try_gpu(i = 0):"""如果存在,则返回gpu(i),否则返回cpu()"""if torch.cuda.device_count() >= i + 1:return torch.device(f'cuda:{i}')return torch.device('cpu')def try_all_gpus():"""返回所有可用的GPU,如果没有GPU,则返回[cpu(),]"""devices = [torch.device(f'cuda:{i}')for i in range(torch.cuda.device_count())]return devices if devices else [torch.device('cpu')]
# 如果 devices 列表不为空,返回 devices 列表。
# 如果 devices 列表为空,返回一个包含单个CPU设备的列表 [torch.device('cpu')]。print(try_gpu())
print(try_gpu(10))
print(try_all_gpus())#张量与GPUx = torch.tensor([1, 2, 3])
print(x.device)
# cpu
# 默认情况下,张量是在CPU上创建的。#张量存储在GPU上
Y = torch.ones(2, 3, device=torch.device('cuda'))
X = torch.ones(2, 3, device=try_gpu())
print(Y)
print(X)
# tensor([[1., 1., 1.],
#         [1., 1., 1.]], device='cuda:0')# 假设至少有两个GPU
# Y = torch.rand(2, 3, device=try_gpu(1))
# print(Y)
# tensor([[0.4860, 0.1285, 0.0440],
#         [0.9743, 0.4159, 0.9979]], device='cuda:1')#复制
# Z = X.cuda(1)
# print(X)
# print(Z)
# tensor([[1., 1., 1.],
#         [1., 1., 1.]], device='cuda:0')
# tensor([[1., 1., 1.],
#         [1., 1., 1.]], device='cuda:1')#相加
print(X + Y)
# tensor([[2., 2., 2.],
#         [2., 2., 2.]], device='cuda:0')# 假设变量Z已经存在于第二个GPU上。 如果我们还是调用Z.cuda(1)
# 不会复制并分配新内存
# Z.cuda(1) is Z
# True# 神经网络与GPU
# 神经网络模型可以指定设备
net = nn.Sequential(nn.Linear(3, 1)) # 在cup上建立
net = net.to(device=try_gpu()) # 将模型参数放在GPU上print(net(X))
# tensor([[-1.4124],
#         [-1.4124]], device='cuda:0', grad_fn=<AddmmBackward>)#查看模型参数在哪里
print(net[0].weight.data.device)
# cuda:0

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com