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]。
10
相似问题
回答 1
回答 1