【问题标题】:Passing input to tf.nn.static_rnn将输入传递给 tf.nn.static_rnn
【发布时间】:2017-12-15 05:23:46
【问题描述】:

根据文档,static_rnn 的第二个参数应设置为“长度为 T 的输入列表,每个输入的形状为 [batch_size, input_size] 的张量,或此类元素的嵌套元组。”

我将列列表传递给 static_rnn,但我得到 ValueError: linear is expecting 2D arguments。所以input_size 不能是 1。input_size 和 T 到底指的是什么?为什么input_size 不能为 1?

我突然想到static_rnn 可能期望一个列表,其矩阵包含单热向量。在这种情况下,input size 将是词汇长度。但是如果static_rnn 需要one-hot 向量,文档会这样说,对吧?

【问题讨论】:

    标签: tensorflow neural-network recurrent-neural-network


    【解决方案1】:

    input_size表示特征的数量,它可以是1,例如在普通的时间序列预测中。你得到这个错误,很可能是因为你的张量是[batch_size],而不是[batch_size, 1]。

    因此,您不必一次性对特征进行编码(尽管可以),只需设置正确的输入张量等级即可。

    示例代码:

    n_inputs = 1
    n_neurons = 5
    X0 = tf.placeholder(dtype=tf.float32, shape=[None, n_inputs])
    X1 = tf.placeholder(dtype=tf.float32, shape=[None, n_inputs])
    basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)
    output_seqs, states = tf.nn.static_rnn(basic_cell, [X0, X1], dtype=tf.float32)
    Y0, Y1 = output_seqs
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多