tensorflow - LSTM 的输入应该是什么样子?
问题描述
想象一下,您正在 tensorflow 中训练一个 LSTM 模型来执行序列分类任务。在每个时间步,您都有一个二进制向量v_i
(例如v_i=[0, 1, 0, 1]
),并且对于每个序列,您有可变数量的时间步(v_i
尽管二进制向量的长度相等)。
在 tensorflow 中训练 LSTM 模型时,如下所示:
lstm_cell=tf.nn.rnn_cell.LSTMCell(number_of_hidden)
tf.contrib.rnn.static_rnn (lstm_cell, training_data)
单个训练序列(具有三个时间步长v_1=[0, 1, 0, 1]
、v_2=[1, 1, 1, 0]
和v_3=[0, 0, 1, 1]
)是否应该看起来像
[[0, 1, 0, 1], [1, 1, 1, 0], [0, 0, 1, 1]]
或者
[[0], [1], [0], [1], [1], [1], [1], [0], [0], [0], [1], [1]]
或者是其他东西?
我对 LSTMCell 如何在每个时间步处理输入有点困惑。
解决方案
为了社区的利益,在此处(答案部分)提供解决方案,即使它出现在评论部分。
的输入形状static_rnn
是[timesteps,batch_size, features]
。这是一个二维张量的列表 shape [batch_size, features]
。你可以参考这个。所以应该[[[0, 1, 0, 1]], [[1, 1, 1, 0]], [[0, 0, 1, 1]]]