torch.from_dlpack¶
- torch.from_dlpack(ext_tensor) Tensor [原始碼][原始碼]¶
將來自外部程式庫的張量轉換為
torch.Tensor
。返回的 PyTorch 張量將與輸入張量(可能來自另一個函式庫)共享記憶體。請注意,原地 (in-place) 操作也會影響輸入張量的資料。 這可能會導致意想不到的問題(例如,其他函式庫可能具有唯讀標記或不可變的資料結構),因此使用者只有在確定沒問題的情況下才應這樣做。
- 參數
ext_tensor (具有
__dlpack__
屬性的物件,或 DLPack capsule) –要轉換的張量或 DLPack capsule。
如果
ext_tensor
是一個張量(或 ndarray)物件,它必須支援__dlpack__
協定(即,具有ext_tensor.__dlpack__
方法)。 否則,ext_tensor
可能是一個 DLPack capsule,它是一個不透明的PyCapsule
實例,通常由to_dlpack
函數或方法產生。- 回傳類型
範例
>>> import torch.utils.dlpack >>> t = torch.arange(4) # Convert a tensor directly (supported in PyTorch >= 1.10) >>> t2 = torch.from_dlpack(t) >>> t2[:2] = -1 # show that memory is shared >>> t2 tensor([-1, -1, 2, 3]) >>> t tensor([-1, -1, 2, 3]) # The old-style DLPack usage, with an intermediate capsule object >>> capsule = torch.utils.dlpack.to_dlpack(t) >>> capsule <capsule object "dltensor" at ...> >>> t3 = torch.from_dlpack(capsule) >>> t3 tensor([-1, -1, 2, 3]) >>> t3[0] = -9 # now we're sharing memory between 3 tensors >>> t3 tensor([-9, -1, 2, 3]) >>> t2 tensor([-9, -1, 2, 3]) >>> t tensor([-9, -1, 2, 3])