• 文档 >
  • torch >
  • torch.asarray
快捷键

torch.asarray

torch.asarray(obj: Any, *, dtype: Optional[dtype], device: Optional[DeviceLikeType], copy: Optional[bool] = None, requires_grad: bool = False) Tensor

obj 转换为张量。

obj 可以是以下之一:

  1. 张量

  2. NumPy 数组或 NumPy 标量

  3. DLPack 胶囊

  4. 实现 Python 缓冲区协议的对象

  5. 一个标量

  6. 一系列标量

obj 是一个张量、NumPy 数组或 DLPack 胶囊时,返回的张量默认情况下不需要梯度,数据类型与 obj 相同,位于同一设备上,并且与它共享内存。这些属性可以通过 dtypedevicecopyrequires_grad 关键字参数进行控制。如果返回的张量具有不同的数据类型、位于不同的设备上或请求了副本,则它不会与 obj 共享内存。如果 requires_gradTrue ,则返回的张量需要梯度,并且如果 obj 也是一个具有 autograd 历史的张量,则返回的张量将具有相同的历史。

obj 不是张量、NumPy 数组或 DLPack 胶囊但实现了 Python 的缓冲区协议时,缓冲区被解释为根据传递给 dtype 关键字参数的数据类型大小分组的字节数组。(如果没有传递数据类型,则使用默认的浮点数据类型。)返回的张量将具有指定的数据类型(如果没有指定,则使用默认的浮点数据类型)并且默认情况下位于 CPU 设备上,并与缓冲区共享内存。

obj 是 NumPy 标量时,返回的 tensor 将在 CPU 上是一个 0 维 tensor,并且不共享其内存(即 copy=True )。默认数据类型将与 NumPy 标量的数据类型对应的 PyTorch 数据类型相同。

obj 不是上述任何一种但是一个标量,或者是一系列标量时,返回的 tensor 默认将根据标量值推断其数据类型,位于当前默认设备上,并且不共享其内存。

参见

torch.tensor() 创建一个总是从输入对象复制数据的 tensor。 torch.from_numpy() 创建一个总是从 NumPy 数组共享内存的 tensor。 torch.frombuffer() 创建一个总是从实现缓冲协议的对象共享内存的 tensor。 torch.from_dlpack() 创建一个总是从 DLPack 胶囊共享内存的 tensor。

参数:

obj(对象)- 一个 tensor、NumPy 数组、DLPack 胶囊、实现 Python 缓冲协议的对象、标量或标量序列。

关键字参数:
  • dtype ( torch.dtype ,可选) – 返回张量的数据类型。默认: None ,导致返回张量的数据类型从 obj 推断。

  • copy (bool,可选) – 控制返回的张量是否与 obj 共享内存。默认: None ,导致尽可能返回与 obj 共享内存的张量。如果 True 则返回的张量不共享其内存。如果 False 则返回的张量与 obj 共享内存,如果无法共享则抛出错误。

  • device ( torch.device ,可选) – 返回张量的设备。默认: None ,导致使用 obj 的设备。或者,如果 obj 是一个 Python 序列,则使用当前默认设备。

  • requires_grad (bool,可选) – 返回的张量是否需要 grad。默认: False ,导致返回的张量不需要梯度。如果 True ,则返回的张量将需要梯度,如果 obj 也是一个具有 autograd 历史记录的张量,则返回的张量将具有相同的历史记录。

示例:

>>> a = torch.tensor([1, 2, 3])
>>> # Shares memory with tensor 'a'
>>> b = torch.asarray(a)
>>> a.data_ptr() == b.data_ptr()
True
>>> # Forces memory copy
>>> c = torch.asarray(a, copy=True)
>>> a.data_ptr() == c.data_ptr()
False

>>> a = torch.tensor([1., 2., 3.], requires_grad=True)
>>> b = a + 2
>>> b
tensor([3., 4., 5.], grad_fn=<AddBackward0>)
>>> # Shares memory with tensor 'b', with no grad
>>> c = torch.asarray(b)
>>> c
tensor([3., 4., 5.])
>>> # Shares memory with tensor 'b', retaining autograd history
>>> d = torch.asarray(b, requires_grad=True)
>>> d
tensor([3., 4., 5.], grad_fn=<AddBackward0>)

>>> array = numpy.array([1, 2, 3])
>>> # Shares memory with array 'array'
>>> t1 = torch.asarray(array)
>>> array.__array_interface__['data'][0] == t1.data_ptr()
True
>>> # Copies memory due to dtype mismatch
>>> t2 = torch.asarray(array, dtype=torch.float32)
>>> array.__array_interface__['data'][0] == t2.data_ptr()
False

>>> scalar = numpy.float64(0.5)
>>> torch.asarray(scalar)
tensor(0.5000, dtype=torch.float64)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源