目录

torch.utils.dlpack

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

将外部库中的张量转换为torch.Tensor

返回的 PyTorch 张量将与输入张量共享内存(该输入张量可能来自其他库)。请注意,因此原地操作也会影响输入张量的数据。这可能会导致意外的问题(例如,其他库可能具有只读标志或不可变的数据结构),所以用户只有在确定没有问题的情况下才应这样做。

Parameters

ext_tensor (具有 __dlpack__ 个属性的对象,或一个 DLPack capsule) –

要转换的张量或 DLPack capsule。

如果 ext_tensor 是一个张量(或 ndarray)对象,它必须支持 __dlpack__ 协议(即具有 ext_tensor.__dlpack__ 方法)。否则 ext_tensor 可能是一个 DLPack capsule,这是一个不透明的 PyCapsule 实例,通常由 to_dlpack 函数或方法生成。

Examples:

>>> 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 0x7f6017d14300>
>>> 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 接口。它返回的胶囊 在 Python 中除了作为 from_dlpack 的输入外,不能用于其他任何用途。 DLPack 更符合习惯的用法是直接在张量对象上调用 from_dlpack - 当该对象具有 __dlpack__ 方法时, 这将生效,而 PyTorch 和大多数其他库现在确实都提供了这个方法。

警告

每个胶囊生成时仅调用 from_dlpack 一次。 当胶囊被多次消耗时的行为是未定义的。

Parameters

tensor – 要导出的张量

DLPack capsule 共享张量的内存。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源