評價此頁

torch.as_tensor#

torch.as_tensor(data: Any, dtype: Optional[dtype] = None, device: Optional[DeviceLikeType]) Tensor#

data 轉換為張量,儘可能地共享資料並保留 autograd 歷史記錄。

如果 data 已經是具有所需 dtype 和 device 的張量,則直接返回 data 本身。但如果 data 是具有不同 dtype 或 device 的張量,則會像使用 data.to(dtype=dtype, device=device) 一樣進行復制。

如果 data 是具有相同 dtype 和 device 的 NumPy 陣列 (ndarray),則使用 torch.from_numpy() 構建張量。

如果 data 是 CuPy 陣列,除非透過 device 顯式覆蓋,否則返回的張量將位於與 CuPy 陣列相同的裝置上。CuPy 陣列的裝置是透過陣列指標使用 cudaPointerGetAttributes 推斷的,除非 device 提供了顯式裝置索引。

另請參閱

torch.tensor() 絕不共享其資料,而是建立一個新的“葉子張量”(參見 Autograd 機制)。

引數
  • data (array_like) – 張量的初始資料。可以是列表、元組、NumPy ndarray、標量以及其他型別。

  • dtype (torch.dtype, optional) – 返回張量的期望資料型別。預設值:如果為 None,則從 data 推斷資料型別。

  • device (torch.device, optional) – 構造張量的裝置。如果為 None 且 data 是張量,則使用 data 的裝置。如果為 None 且 data 不是張量,則結果張量將在當前裝置上構造。

示例

>>> a = numpy.array([1, 2, 3])
>>> t = torch.as_tensor(a)
>>> t
tensor([ 1,  2,  3])
>>> t[0] = -1
>>> a
array([-1,  2,  3])

>>> a = numpy.array([1, 2, 3])
>>> t = torch.as_tensor(a, device=torch.device('cuda'))
>>> t
tensor([ 1,  2,  3])
>>> t[0] = -1
>>> a
array([1,  2,  3])