首页 文章

Tensorflow RNN输出张量形状

提问于
浏览
0

我对张量流非常陌生,我不知道如何塑造张量,以便我将输出作为单个数字 . 基本上,我的经常性网络应该猜测下一个数字 . 相反,对于每个预测,它返回一个包含五个数字的列表?我猜我的一个或多个张量都是畸形的 .

我的输入数据被格式化为大约2000个列表,其中包含5个功能,每个功能如下:

[
  np.array ([
              [1],[2],[3],[4],[5]
            ]) 
]

这是RNN的代码:

cell_units = 400
batch_size = 5
no_of_epochs = 500

data = tf.placeholder (tf.float32, [None, 5, 1])
target = tf.placeholder (tf.float32, [None, 1, 1])


weight = tf.Variable (tf.random_normal ([cell_units, 5, 1]))
bias = tf.Variable (tf.random_normal([1, 1]))


cell = tf.contrib.rnn.BasicRNNCell (num_units = cell_units)

output, states = tf.nn.dynamic_rnn (cell, data, dtype=tf.float32)


output = tf.transpose (output, [1, 0, 2])


activation = tf.matmul (output, weight) + bias


cost = tf.reduce_mean (
                        (
                            tf.log (tf.square (activation - target))
                        )
                      )

optimizer = tf.train.AdamOptimizer (learning_rate = 0.01).minimize(cost)

with tf.Session () as sess:

    sess.run (tf.global_variables_initializer ())
    no_of_batches = int (len (train_x) / batch_size)

    for i in range(no_of_epochs):
        start = 0
        for j in range(no_of_batches):
            inp = train_x [start:start+batch_size]
            out = train_y [start:start+batch_size]
            start += batch_size

            sess.run (optimizer, {data: inp, target: out})

1 回答

  • 0

    tf.nn.dynamic_rnn 期望输入形状 [batch_size, max_time, ...] . 在您的示例中, batch_size 是动态的(即,未知), max_time5 (即,时间步数 . ) . 当然,RNN的输出包含 5 个条目,每个输入步骤一个: [None, 5, cell_units] .

    正如@ Ishant Mrinal建议您可以选择最后一个输出步骤 .

    weight = tf.Variable (tf.random_normal ([cell_units, 1]))
    bias = tf.Variable (tf.random_normal([1, 1]))
    
    cell = tf.contrib.rnn.BasicRNNCell (num_units = cell_units)
    output, states = tf.nn.dynamic_rnn (cell, data, dtype=tf.float32)
    # Get the last step (4th index).
    output = tf.squeeze(tf.transpose (output, [0, 2, 1])[:,:,4]) # Shape of [batch_size, cell_units].
    activation = tf.matmul (output, weight) + bias
    

    activation 的形状为 [batch_size, 1] .

相关问题