我正在学习如何使用LSTM RNN。 我看到了这个教程:https://www.youtube.com/watch?v=SeffmcG42SY& 之后,我尝试应用我学到的东西并更改数据集。 问题是,我有点失去了所有的重塑,我真的不知道如何使用它们以及为什么它们在这里...... 我的数据集有7列和546行。 这是我的超参数
# hyperparameters
lr = 0.001
training_iters = 100000
batch_size = 64
n_inputs = 7 # columns
n_steps = 546 # rows
n_hidden_units = 128 # neurons in hidden layer
n_classes = 1 # class
当我启动会话时,它看起来像这样:
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
step = 0
while step * batch_size < training_iters:
batch_xs, batch_ys = inputX, inputY
batch_xs = batch_xs.reshape([batch_size, n_steps, n_inputs])
sess.run([train_op], feed_dict={
x: batch_xs,
y: batch_ys,
})
if step % 20 == 0:
print(sess.run(accuracy, feed_dict={
x: batch_xs,
y: batch_ys,
}))
step += 1
然后,我有一条错误消息
“无法将3822大小的阵列重塑为形状(64,546,7)”
如果有人能解释我的工作方式和/或如何解决问题,那真的很棒!
谢谢
答案 0 :(得分:2)
LSTM Cell有输入,LSTM单元随着时间的推移展开,用于一个序列的不同输入。由于我们使用批量学习算法,我们需要提供一批输入。因此,tesorflow中的LSTM输入具有形状(batch_size X时间步长以展开X输入大小)。
在你的情况下
根据您输入的方式(如何进行特征提取),您将不得不将其重塑为64 X 546 X 7(== 244608)如果您的输入大小为3822,那么其中的哪一个会失败
将LSTM从序列预测到序列预测(一对一模型)。例如,假设你有一个句子列表(比方说S句)。假设你在每个句子中都有W个单词。现在,您要预测每个句子中每个单词的词性标记。假设您将每个单词表示为热门编码,并且您的词汇量大小为V.因此热门编码向量的大小将为V.
现在您的LSTM模型输入形状将是(批量大小X W X V),其中批量大小是&lt;&lt; S和通常是32或64。