我无法理解tensorflow 1中的LSTM实现

我无法理解tensorflow 1中的LSTM实现,tensorflow,machine-learning,deep-learning,lstm,recurrent-neural-network,Tensorflow,Machine Learning,Deep Learning,Lstm,Recurrent Neural Network,我一直在研究LSTM层在神经网络架构中的实现。LSTM层定义如下。我很难理解这个代码。我在代码片段后面列出了我的疑问 代码来源:https://gist.github.com/awjuliani/66e8f477fc1ad000b1314809d8523455#file-a3c-py lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(RNN_SIZE,state_is_tuple=True) c_init = np.zeros((1, lstm_c

我一直在研究LSTM层在神经网络架构中的实现。LSTM层定义如下。我很难理解这个代码。我在代码片段后面列出了我的疑问

代码来源:https://gist.github.com/awjuliani/66e8f477fc1ad000b1314809d8523455#file-a3c-py

    lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(RNN_SIZE,state_is_tuple=True)
    c_init = np.zeros((1, lstm_cell.state_size.c), np.float32)
    h_init = np.zeros((1, lstm_cell.state_size.h), np.float32)
    state_init = [c_init, h_init]
    c_in = tf.placeholder(tf.float32, [1, lstm_cell.state_size.c])
    h_in = tf.placeholder(tf.float32, [1, lstm_cell.state_size.h])
    state_in = (c_in, h_in)
    rnn_in = tf.expand_dims(self.h3, [0])
    step_size = tf.shape(inputs)[:1]
    state_in = tf.nn.rnn_cell.LSTMStateTuple(c_in, h_in)
    lstm_outputs, lstm_state = tf.nn.dynamic_rnn(
    lstm_cell, rnn_in, initial_state=state_in, sequence_length=step_size,
    time_major=False)
    lstm_c, lstm_h = lstm_state
    state_out = (lstm_c[:1, :], lstm_h[:1, :])
    self.rnn_out = tf.reshape(lstm_outputs, [-1, RNN_SIZE])
以下是我的疑问:

  • 我知道我们需要初始化一个随机上下文并隐藏 要传递到第一个LSTM单元的向量。但是为什么要同时初始化c_init,h_init和c_in,h_in呢。它们有什么用途? 它们之间有什么不同?(状态_in和状态_init相同?)
  • 为什么要使用LSTMStateTuple

  • 在详细说明之前,请告诉我们您是否从真实来源获取了此代码。如果是这样,请指定源的链接,以便我们可以深入了解并帮助您。谢谢@TensorflowSupport是的,源代码来自博客系列。git:很抱歉,有一个额外的问题而不是解决方案。那代码有效吗?您执行了吗?@TensorflowSupport是的,它是从一个工作代码文件中获取的。在详细介绍之前,您能否告知我们您是否从真实的源代码中获取了此代码。如果是这样,请指定源的链接,以便我们可以深入了解并帮助您。谢谢@TensorflowSupport是的,源代码来自博客系列。git:很抱歉,有一个额外的问题而不是解决方案。那代码有效吗?您执行了吗?@TensorflowSupport是的,它取自一个工作代码文件