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])