首页 > 解决方案 > 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 如何在每个时间步处理输入有点困惑。

标签: tensorflowlstmrecurrent-neural-network

解决方案


为了社区的利益,在此处(答案部分)提供解决方案,即使它出现在评论部分。

的输入形状static_rnn[timesteps,batch_size, features]。这是一个二维张量的列表 shape [batch_size, features]。你可以参考这个。所以应该[[[0, 1, 0, 1]], [[1, 1, 1, 0]], [[0, 0, 1, 1]]]


推荐阅读