create_lod_tensor¶
从一个numpy数组、list或LoDTensor创建一个新的LoDTensor。
具体实现方法如下:
检查基于序列长度的LoD(length-based LoD),即参数中的
recursive_seq_lens
是否正确。将
recursive_seq_lens
转换为基于偏移量的LoD(offset-based LoD)。根据place参数,把所提供的
data
(numpy数组、list或LoDTensor)的数据复制到CPU或GPU上。将基于偏移量的LoD设置到输出的LoDTensor中。
假设我们想创建一个LoDTensor表示词的序列,其中每个词用一个整数id表示。若待创建的LoDTensor表示2个句子,其中一个句子包含2个单词,另一个句子包含3个单词。
那么,data
为一个维度为(5, 1)的numpy整数数组;recursive_seq_lens
为[[2, 3]],表示每个句子含的单词个数。在该接口内部,基于序列长度的 recursive_seq_lens
[[2, 3]]会转换为为基于偏移量的LoD [[0, 2, 5]]。
请查阅 cn_user_guide_lod_tensor 了解更多关于LoD的介绍。
参数¶
data (numpy.ndarray|list|LoDTensor) - 表示LoDTensor数据的numpy数组、list或LoDTensor。
recursive_seq_lens (list[list[int]]) - 基于序列长度的LoD信息。
place (CPUPlace|CUDAPlace) - 表示返回的LoDTensor存储在CPU或GPU place中。
返回¶
包含数据信息和序列长度信息的LoDTensor。
返回类型¶
LoDTensor
代码示例¶
import paddle.fluid as fluid
import numpy as np
t = fluid.create_lod_tensor(np.ndarray([5, 30]), [[2, 3]], fluid.CPUPlace())