本系列文章配套代码获取有以下两种途径:
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1XuxKa9_G00NznvSK0cr5qw?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/PyTorch
Tensor的设备属性:
在Pytorch中,Tensor的设备属性是一个核心概念,它决定了Tensor数据结构的物理存储位置,即是在中央处理器(CPU)上还是在图形处理器(GPU)上。
了解Tensor的存储位置有助于有效管理内存和其他计算资源,避免不必要的数据传输问题和内存溢出。
Tensor的设备属性对于深度学习模型的训练和推断性能至关重要,因为不同的硬件设备在处理大规模并行计算时的效率不同。例如,对于大规模矩阵运算和深度学习模型,GPU通常比CPU快得多。
Pytorch中,Tensor的设备属性通常是一个字符串,如“cpu”或“cuda:x”,其中x是一个表示GPU编号的整数(在多GPU环境中)。
# 首先检查是否有可用的GPU,并据此设置一个设备标识符。
# 然后,创建一个Tensor,并将其指定到选定的设备上。
>>> if torch.cuda.is_available():
... device = "cuda:0"
... print(f"Using GPU: {device}")
... else:
... device = "cpu"
... print("Using CPU")
...
Using GPU: cuda:0
设置Tensor的设备属性:
-
在创建时指定:
要查询Tensor当前存储在哪个设备上,可以使用device属性。
# 创建一个在指定设备上的Tensor
>>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
>>> tensor_on_gpu = torch.tensor([1.0, 2.0, 3.0], device=device)
>>> tensor_on_gpu.device
device(type='cuda', index=0)
-
使用to()方法:
对于已经存在的Tensor,可以使用to()方法将其移动到另一个设备上。
# 假设我们有一个在CPU上的Tensor
>>> tensor_on_cpu = torch.tensor([1.0, 2.0, 3.0])
>>> tensor_on_cpu.device
device(type='cpu')
# 将其移动到GPU上(如果可用)
>>> tensor_on_gpu = tensor_on_cpu.to(device="cuda")
>>> tensor_on_gpu.device
device(type='cuda', index=0)
-
使用cpu()、cuda()方法:
也可以使用简写的cpu()、cuda()方法来替代to()方法实现,不过推荐使用to()方法,因为它更加通用和灵活,可以同时通过device和dtype参数来更改Tensor的存储位置和数据类型。
# 假设我们有一个在CPU上的Tensor
>>> tensor_on_cpu = torch.tensor([1.0, 2.0, 3.0])
>>> tensor_on_cpu.device
device(type='cpu')
# 将其移动到GPU上(如果可用)
>>> tensor_on_gpu = tensor_on_cpu.cuda()
>>> tensor_on_gpu.device
device(type='cuda', index=0)
# 再将其移动到CPU上
>>> tensor_on_cpu = tensor_on_gpu.cpu()
>>> tensor_on_cpu.device
device(type='cpu')
更多内容可以前往官网查看:
https://pytorch.org/
本篇文章来源于微信公众号: 码农设计师