lstm实现,num_lstm_nodes与num_time_step含义理解、与实现x_size,h_size维度的理解

来源:7-17 LSTM单元内部结构实现

慕数据4013138

2019-11-18

老师,您好,我还是有点疑惑。
7-17视频,text-rnn-pure-lstm.ipynb代码中
1)看到您在其他答疑下游解释"num_lstm_nodes的含义跟全连接层的num_units类似,就是LSTM内部状态向量的长度",这里的内部状态向量长度和定义的“num_time_steps”不是一个概念吧?假设num_lstm_nodes[0]=32,num_time_steps=50,是说当num_time_steps=1,第一个时间序列时,经过的第一层lstm内部就有32个神经元来计算它的输出?

2)关于lstm实现的x_size 与h_size 的理解还是有些困惑,需要请教下您。
图片描述
这里的x_size的第二个维度num_lstm_nodes[0]是lstm隐含状态的维度大小?

写回答

1回答

正十七

2019-11-24

对于第一个问题,Lstm内部的状态向量跟num_time_steps是两回事。在每一步,都会有一个内部向量。在不同的time step之间的参数共享,是循环网络的特性。

对于第二个问题,对于Lstm的每一步,都有两个输入,一个是上一步的隐含状态h,另一个是当前步的输入x。对于h, 它的长度是num_lstm_node[0],我们需要让它乘以一个num_lstm_node[0] x num_lstm_node[0]的矩阵,做线性变换得到一个新的长度为num_lstm_node[0]的向量。对于x,它的长度为embedding_len, 我们需要让它乘以一个embedding_len x num_lstm_node[0]的矩阵,做线性变换得到一个新的长度为num_lstm_node[0]的向量。然后把两个向量相加再加偏置,再去做激活函数。所以h_size就是num_lstm_node[0] x num_lstm_node[0]。

1
0

深度学习之神经网络(CNN/RNN/GAN)算法原理+实战

深度学习算法工程师必学,深入理解深度学习核心算法CNN RNN GAN

2617 学习 · 935 问题

查看课程