from_dlpack

paddle.utils.dlpack. from_dlpack ( dlpack ) [源代码]

将 DLPack 格式的 Tensor 解码为 Paddle Tensor,DLPACK 是一种通用稳定的内存数据结构,可用于不同深度学习框架之间的 Tensor 共享。

注解

一个 dlpack 只能被 from_dlpack 解码一次。

参数

  • dlpack (SupportDLPack | PyCapsule) - 一个实现了 __dlpack____dlpack_device__ 方法的对象,或者是一个带有 dltensor 的 PyCapsule 对象。

返回

  • out (Tensor) - 从 dlpack 中解码得到的 Paddle Tensor,支持的数据类型为: bool,float16,float32,float64,uint8,int8,int16,int32,int64,complex64,complex128,支持的设备类型为: CPUCUDAPlaceCUDAPinnedPlace

代码示例 1

 >>> import paddle
 >>> # From DLPack capsule
 >>> x = paddle.to_tensor([[0.2, 0.3, 0.5, 0.9],
 ...                       [0.1, 0.2, 0.6, 0.7]], place="cpu")
 >>> dlpack = paddle.utils.dlpack.to_dlpack(x)

 >>> y = paddle.utils.dlpack.from_dlpack(dlpack)
 >>> # dlpack capsule will be renamed to 'used_dltensor' after decoded
 >>> print(dlpack)
 <capsule object "used_dltensor" at 0x7f6103c681b0>

 >>> print(y)
 Tensor(shape=[2, 4], dtype=float32, place=Place(cpu), stop_gradient=True,
        [[0.20000000, 0.30000001, 0.50000000, 0.89999998],
         [0.10000000, 0.20000000, 0.60000002, 0.69999999]])
 >>> # data of tensor x is shared with tensor y
 >>> y[0, 0] = 10.0
 >>> print(x)
 Tensor(shape=[2, 4], dtype=float32, place=Place(gpu:0), stop_gradient=True,
        [[10.       , 0.30000001, 0.50000000, 0.89999998],
         [0.10000000, 0.20000000, 0.60000002, 0.69999999]])

代码示例 2

 >>> # Directly from external tensor that implements '__dlpack__' and '__dlpack_device__' methods
 >>> import paddle
 >>> import numpy as np
 >>> x = np.array([[0.2, 0.3, 0.5, 0.9],
 ...              [0.1, 0.2, 0.6, 0.7]])
 >>> y = paddle.utils.dlpack.from_dlpack(x)
 >>> y[0, 0] = 10.0
 >>> # data of tensor x is shared with tensor y
 >>> print(x)
 [[10.   0.3  0.5  0.9]
 [ 0.1  0.2  0.6  0.7]]