PyTorch张量:从基础到实战
1. 广义张量与数据交互
广义张量本质上也是张量,在实际应用中,我们常常需要在NumPy数组和PyTorch张量之间进行转换。
1.1 NumPy数组与PyTorch张量的转换
当我们将一个张量转换为NumPy数组时,会返回一个具有正确大小、形状和数值类型的NumPy多维数组。有趣的是,返回的数组与张量存储共享相同的底层缓冲区。这意味着只要数据位于CPU内存中, numpy 方法基本上可以零成本执行。而且,修改NumPy数组会导致原始张量发生变化。如果张量分配在GPU上,PyTorch会将张量的内容复制到CPU上分配的NumPy数组中。示例代码如下:
import numpy as np
import torch
# 假设points是一个PyTorch张量
points = torch.tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]], dtype=torch.float32)
points_np = points.numpy()
反之,我们可以通过以下方式从NumPy数组获得PyTorch张量:
points = torch.from_numpy(points_np)
需要注意的是,PyTorch的默认数值类
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



