create_lod_tensor
paddle.fluid.
create_lod_tensor
(data, recursive_seq_lens, place)[源代码]
从一个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]]。
请查阅 LoDTensor 了解更多关于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())