Fluid版本中如何使用序列数据?

  • 问题描述:在旧版的Paddle中可以使用三种序列格式来使用序列数据,但在Fluid版中这些功能都消失了,那我现在该如何在Fluid版的Paddle中使用序列数据呢?

  • 问题分析:
    Fluid版是一个比较大的改进版本,从多方面考虑后,并没有很完美的向后兼容,这就造成旧版Paddle中的方法并不能再Fluid使用,在Fluid中所有的数据类型都为LoD-Tensor,对于不存在序列信息的数据(如此处的变量X),其lod_level=0,如果是存在序列的数据则根据需求设置不同的lod_level则可。

  • 问题解决:

可以直接使用fluid.create_lod_tensor()方法来使用序列数据,该方法的主要作用就是从numpy数组,表或现有的lod张量创建lod张量。实例如下:

import paddle.fluid as fluid

data1 = [[211]]  
data2 = [[6]]  
lod = [[1]]

place = fluid.CPUPlace()

first_word = fluid.create_lod_tensor(data1, lod, place)
second_word = fluid.create_lod_tensor(data2, lod, place)

更多细节可以参考LoDTensor文档:http://www.paddlepaddle.org/documentation/docs/zh/1.1/user_guides/howto/prepare_data/lod_tensor.html#

  • 问题拓展:
    create_lod_tensor函数从一个numpy数组,列表或者已经存在的lod tensor中创建一个lod tensor。

通过一下几步实现:

1.检查length-based level of detail (LoD,长度为基准的细节层次),或称recursive_sequence_lengths(递归序列长度)的正确性
2.将recursive_sequence_lengths转化为offset-based LoD(偏移量为基准的LoD)
3.把提供的numpy数组,列表或者已经存在的lod tensor复制到CPU或GPU中(依据执行场所确定)
4.利用offset-based LoD来设置LoD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值