想象一下,您正在张量流中训练LSTM模型以进行序列分类任务。在每个时间步上,您都有一个二进制向量v_i
(例如v_i=[0, 1, 0, 1]
),对于每个序列,您都有可变数量的时间步长(尽管二进制向量v_i
的长度相等)。
当在张量流中训练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]
。这是形状为[batch_size, features]
的2D张量的列表。您可以参考this。所以应该[[[0, 1, 0, 1]], [[1, 1, 1, 0]], [[0, 0, 1, 1]]]