Paddle 如何将一维向量增加lod信息,作为rnn的输入

whlutmcx  于 2021-11-30  发布在  Java
关注(0)|答案(4)|浏览(341)

你好,使用paddle fluid 0.15版本,现在想实现一个简单的lstm,使用py_reader读入数据

在rnn中,通过fluid.layers.slice切片获得150为的向量,现在需要将这个向量转换为10*15的序列格式,10可以理解为一句话中的10个词,15是词的维度,现在这样实现运行报错,试了很多方法都不太行,求指导!

报错信息如下

dddzy1tm

dddzy1tm1#

lod_reset的api示例请参考:http://www.paddlepaddle.org/documentation/docs/zh/1.4/api_cn/layers_cn.html#lod-reset

lod_reset是在词上面做的,无关乎词的维度。如果仅仅要变成[10,15],用reshape可以么?可以参考下:#15289 (comment)

pb3skfrl

pb3skfrl2#

就是按照lod_reset的api示例写的,用reshape还是不包含序列信息,运行还是有问题,现在就是想把这个150维特征变成可以传给lstm的数据格式,不知道怎么转换数据格式。

qgelzfjb

qgelzfjb3#

  1. 首先150维的向量需要reshape成[10,15]的。
  2. reshape后不包含序列信息,因此reshape后要用lod_reset来加。从问题看,只有一条句子10个词,因此y.lod=0, 10
h5qlskok

h5qlskok4#

请问怎么设置y.lod=0, 10啊,现在这么写还是不对

应该是这条语句不对
seg_feats_new = fluid.layers.data(name='y', shape=[0, 10], lod_level=1)
能给个正确写法吗?

相关问题