首页人工智能Pytorch【深度学习(PyTorch...

【深度学习(PyTorch篇)】6.Tensor的设备属性


本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1XuxKa9_G00NznvSK0cr5qw?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/PyTorch





01

Tensor的设备属性:


Pytorch中,Tensor的设备属性是一个核心概念,它决定了Tensor数据结构的物理存储位置,即是在中央处理器(CPU)上还是在图形处理器(GPU)上。

了解Tensor的存储位置有助于有效管理内存和其他计算资源,避免不必要的数据传输问题和内存溢出。

Tensor的设备属性对于深度学习模型的训练和推断性能至关重要,因为不同的硬件设备在处理大规模并行计算时的效率不同。如,对于大规模矩阵运算和深度学习模型,GPU通常比CPU快得多。

Pytorch中,Tensor的设备属性通常是一个字符串,如“cpu”“cuda:x”,其中x是一个表示GPU编号的整数(在多GPU环境中)。

可以通过torch.cuda.is_available()方法检查是否有可用的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
02

设置Tensor的设备属性:


PyTorch中,可以通过以下几种方式设置Tensor的设备属性:
  • 在创建时指定:
使用torch.tensor()或相关函数创建Tensor时,可以通过device参数指定其设备。

要查询Tensor当前存储在哪个设备上,可以使用device属性。

# 创建一个在指定设备上的Tensor
>>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
>>> tensor_on_gpu = torch.tensor([1.02.03.0], device=device)

>>> tensor_on_gpu.device
device(type='cuda', index=0)
  • 使用to()方法:

对于已经存在的Tensor,可以使用to()方法将其移动到另一个设备上。

# 假设我们有一个在CPU上的Tensor
>>> tensor_on_cpu = torch.tensor([1.02.03.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()方法,因为它更加通用和灵活,可以同时通过devicedtype参数来更改Tensor的存储位置和数据类型。

# 假设我们有一个在CPU上的Tensor
>>> tensor_on_cpu = torch.tensor([1.02.03.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/


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments