【问题标题】:understanding tensorflow basicLSTMCell parameter input理解tensorflow basicLSTMCell参数输入
【发布时间】:2017-10-30 09:11:35
【问题描述】:

我在理解 tensorflow BasicLSTMCell num_units 输入参数时遇到了一些问题。

我看过其他帖子,但我没有关注,所以希望一个简单的例子会有所帮助。

假设我们在下面有以下 LTSM RNN 模型。如何确定单元格所需的数量单位? LTSM RNN 可以有这样的结构吗?

   Input Vec       1st Hidden Layer     2nd Hidden Layer     Output
   20 x 1          20 x 1               5 x 1                3 x 1

【问题讨论】:

    标签: machine-learning tensorflow rnn


    【解决方案1】:

    Follow,我已经使用动态 rnn (https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn) 为您的模型提供了示例代码

    N_INPUT = 20
    N_TIME_STEPS = #Define here
    N_HIDDEN_UNITS1 = 20
    N_HIDDEN_UNITS2 = 5
    N_OUTPUT =3
    
    input = tf.placeholder(tf.float32, [None, N_TIME_STEPS, N_INPUT], name="input")
    
    lstm_layers = [tf.contrib.rnn.BasicLSTMCell(N_HIDDEN_UNITS1, forget_bias=1.0),tf.contrib.rnn.BasicLSTMCell(N_HIDDEN_UNITS2, forget_bias=1.0),tf.contrib.rnn.BasicLSTMCell(N_OUTPUT, forget_bias=1.0)]
    lstm_layers = tf.contrib.rnn.MultiRNNCell(lstm_layers)
    
    outputs, _ = tf.nn.dynamic_rnn(lstm_layers, input, dtype=tf.float32)
    

    模型的输入(代码中的输入)应该是 [BATCH_SIZE, N_TIME_STEPS, N_INPUT] 和输出(代码中的输出)的形状RNN 的形状为 [BATCH_SIZE, N_TIME_STEPS, N_OUTPUT]

    希望这会有所帮助。

    【讨论】:

    • 啊,所以 num_units 输入只是该特定层中的单元格数?
    • BasicLSTMCell的第一个输入参数叫做num_units(看tensorflow文档)。因此,在您的示例中,第一个隐藏层称为 N_HIDDEN_UNITS1,第二个隐藏层称为 N_HIDDEN_UNITS2
    • 从你的例子中我认为这只是隐藏层中的单元格数量,这对我来说很有意义,所以谢谢,除非我错了
    • 不,实际上在 LSTM 中我们将隐藏层称为 LSTM 单元。因此,传统RNN中的隐藏层被LSTM单元所取代,在一个LSTM单元中,可以有多个隐藏单元,由num_units指定。
    • 哦,我明白了,非常感谢!所以我有两个隐藏的 LTSM 单元,一个有 20 个隐藏单元,另一个有 5 个隐藏单元
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    相关资源
    最近更新 更多