首页 Paddle框架 帖子详情
LSTM 输出维度错误
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 1151 1
LSTM 输出维度错误
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 1151 1

paddle API文档中关于fluid.layers.lstm的说明有误:

  • 输出的维度信息和文档不符:rnn_out:LSTM hidden的输出结果的Tensor,数据类型与input一致,维度为 [seq_len,batch_size,hidden_size],运行示例代码,得到的是[batch_size, seq_len, hidden_size]
  • 代码示例有问题:layt_c.shape 应该为last_c.shape

以下是根据API文档中的示例所写的测试代码

import paddle.fluid.layers as layers

emb_dim = 256
vocab_size = 10000
data = fluid.layers.data(name='x', shape=[-1, 100, 1],
                         dtype='int64')
emb = fluid.layers.embedding(input=data, size=[vocab_size, emb_dim], is_sparse=True)
batch_size = 20
max_len = 100
dropout_prob = 0.2
seq_len = 100
hidden_size = 150
num_layers = 1
init_h = layers.fill_constant([num_layers, batch_size, hidden_size], 'float32', 0.0)
init_c = layers.fill_constant([num_layers, batch_size, hidden_size], 'float32', 0.0)

print emb.shape  # (-1L, 100L, 256L)
rnn_out, last_h, last_c = layers.lstm(emb, init_h, init_c, max_len, hidden_size, num_layers, dropout_prob=dropout_prob)
print rnn_out.shape  # (-1, 100, 150)
print last_h.shape  # (1, 20, 150)
print last_c.shape  # (1, 20, 150)```
0
收藏
回复
全部评论(1)
时间顺序
AIStudio791595
#2 回复于2020-02

感谢指出,这个马上修改。

推荐使用 layers.LSTMCell 和 layers.rnn 配合使用,例子可以参照
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/PaddleTextGEN/seq2seq

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户