在 CPU 上,与 numpy 数组torch.as_tensor(a)相同, ?如果没有,那为什么不呢?torch.from_numpy(a)a
从文档中torch.as_tensor
如果数据是
ndarray对应的dtype并且device是cpu,则不会执行任何复制。
从文档中torch.from_numpy:
返回的张量和
ndarray共享相同的内存。对张量的修改将反映在 中,ndarray反之亦然。
在这两种情况下,结果张量的任何更改都会更改原始 numpy 数组。
a = np.array([[1., 2], [3, 4]])
t1 = torch.as_tensor(a)
t2 = torch.from_numpy(a)
t1[0, 0] = 42.
print(a)
# prints [[42., 2.], [3., 4.]]
t2[1, 1] = 55.
print(a)
# prints [[42., 2.], [3., 55.]]
Run Code Online (Sandbox Code Playgroud)
此外,在这两种情况下,尝试调整张量的大小都会导致错误。
它们基本上是相同的,除了as_tensor更通用的:
from_numpy,它支持多种数据类型,包括列表、元组和本机 Python 标量。as_tensor支持直接更改数据类型和设备,这在实践中非常方便,因为 Torch 张量的默认数据类型是 float32,而 Numpy 数组的默认数据类型是 float64。as_tensor当且仅当原始对象是 Numpy 数组,并且请求的 dtype(如果有)与原始数据相同时,才与原始数据共享内存。这些条件与 相同from_numpy,但后者的设计始终满足这些条件。
| 归档时间: |
|
| 查看次数: |
4160 次 |
| 最近记录: |