快捷方式

torch.utils.dlpack

torch.utils.dlpack.from_dlpack(ext_tensor) Tensor[source][source]

將外部庫中的張量轉換為 torch.Tensor

返回的 PyTorch 張量將與輸入張量(可能來自另一個庫)共享記憶體。請注意,原地操作因此也會影響輸入張量的資料。這可能導致意外問題(例如,其他庫可能具有隻讀標誌或不可變資料結構),因此使用者只有在確定沒問題的情況下才應執行此操作。

引數

ext_tensor(帶有 __dlpack__ 屬性的物件,或 DLPack capsule)–

要轉換的張量或 DLPack capsule。

如果 ext_tensor 是張量(或 ndarray)物件,它必須支援 __dlpack__ 協議(即,具有 ext_tensor.__dlpack__ 方法)。否則,ext_tensor 可以是 DLPack capsule,它是一個不透明的 PyCapsule 例項,通常由 to_dlpack 函式或方法生成。

返回型別

Tensor

示例

>>> 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])
torch.utils.dlpack.to_dlpack(tensor) PyCapsule

返回一個表示張量的不透明物件(一個“DLPack capsule”)。

注意

to_dlpack 是一箇舊的 DLPack 介面。它返回的 capsule 在 Python 中除了作為 from_dlpack 的輸入外,不能用於任何其他用途。DLPack 更符合慣例的使用方式是直接在張量物件上呼叫 from_dlpack - 這適用於當該物件具有 __dlpack__ 方法時,PyTorch 和大多數其他庫現在確實具有此方法。

警告

對於透過 to_dlpack 生成的每個 capsule,只能呼叫一次 from_dlpack。多次使用同一 capsule 的行為是未定義的。

引數

tensor – 要匯出的張量

DLPack capsule 與張量的記憶體共享。

文件

訪問 PyTorch 的完整開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源