在 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 次 |
最近记录: |