from_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,支持的设备类型为:
CPU,CUDAPlace,CUDAPinnedPlace。
代码示例 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]]