首页 Paddle框架 帖子详情
dynamic_lstm在paddle如何实现
收藏
快速回复
Paddle框架 问答深度学习 923 3
dynamic_lstm在paddle如何实现
收藏
快速回复
Paddle框架 问答深度学习 923 3

根据paddlepaddle对dynamic_lstm的定义:https://github.com/PaddlePaddle/Paddle/blob/cb2ad89884382201f74ee9d078f6978645995aa2/python/paddle/fluid/layers/rnn.py#L1937,输入数据通过全连接层将输入维度调整成[T, 4*hidden_size],如果参数use_peepholes=True,那么lstm模块的权重参数维度为[hidden_size, 4*hidden_size],表示[Wch, Wih, Wfh, Woh];lstm模块的偏置参数维度为[1, 7*hidden_size],表示[bc, bi, bf, bo, Wic, Wfc, Woc]。这些参数是如何对输入进行计算的,感觉和API文档里的对应不上:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/dynamic_lstm_cn.html#dynamic-lstm

0
收藏
回复
全部评论(3)
时间顺序
C
Care_Shaw
#2 回复于2020-10

目前我是这么认为的,输入特征经过全连接层后序列中的某一条特征可以看成[xc, xi, xf, xo],维度上是[1, 4*hidden_size],那么第一条特征经过lstm的处理如下(其中×表示叉乘,*表示点乘):

input = sigmoid(xi + Wih×h0 + Wic*c0 + bi)

forget = sigmoid(xf + Wfh×h0 + Wfc*c0 + bf)

output = sigmoid(xo + Woh×h0 + Woc*c0 + bo)

cell = tanh(xc + Wch×h0 + bc)

c1 = forget*c0 + input*cell

h1 = output*tanh(c1)

0
回复
C
Care_Shaw
#3 回复于2020-10

但我对dynamic_lstm中is_reverse=True的具体操作还不清楚,只是将序列倒序吗?还是在内部有其他倒序?

0
回复
C
Care_Shaw
#4 回复于2020-10
但我对dynamic_lstm中is_reverse=True的具体操作还不清楚,只是将序列倒序吗?还是在内部有其他倒序?

包含两次逆序:对输入序列的逆序,以及通过lstm模块后,对输出结果逆序

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