#定义LSTM
lstm = tf.nn.rnn_cell.BasicLSTMCell(lstm_hidden_size)
#将lstm的状态初始化为全0数组
#state.c和state.h分别对应图中的c状态和h状态
#和其他神经网络一样,在优化循环神经网络时,每次也会使用一个batch的训练样本。
state = lstm.zero_state(batch_size,tf.float32)
#定义损失
loss = 0.0
#前馈网络
for i in range(num_steps):
#每一步处理时间序列中的一个时刻。将当前输入current_input(Xt)和前一时刻状态
#state(Ht-1和Ct-1)传入定义的LSTM结构可以得到当前LSTM的输出lstm_output(Ht)和
#更新后状态state(Ht和Ct)。lstm_output用于输出给其他层,state用于输出给下一时刻,
#它们在dropout等方面可以有不同的处理方式。
lstm_output,state = lstm(current_input,state)
#将当前时刻LSTM结构的输出传入一个全连接层得到最后的输出
final_output = fully_connected(lstm_output)
#计算当前时刻输出的损失
loss += calc_loss(final_output,expected_output)
#双层LSTM应用
#定义一个基本的LSTM结构作为循环体的基础结构。
lstm_cell = tf.nn.rnn_cell.BasicLSTMCell
#通过MultiR