TensorFlow有状态LSTM模型的不同输入和输出形状



我想创建一个"序列"模型(您可能已经猜到的时间序列模型(,它采用20天的过去数据,特征大小为2,并预测未来的1天,特征大小相同为2

我发现你需要为有状态的LSTM模型指定批量大小,所以如果我指定批量大小为32,那么模型的最终输出形状是(32, 2),我认为这意味着模型预测的是未来32天,而不是1

我该如何继续修理它?

此外,在我到达问题之前询问;例如,如果我指定了32的批量大小,但我想在形状为(1, 20, 2)的输入上进行预测,由于我将批量大小从32更改为1,模型会正确预测吗。非常感谢。

您不需要指定batch_size。但你应该输入三维张量:

import tensorflow as tf
from tensorflow.keras.layers import Input, LSTM, Dense
from tensorflow.keras import Model, Sequential
features = 2
dim = 128
new_model = Sequential([
LSTM(dim, stateful=True, return_sequences = True),
Dense(2)
])
number_of_sequences = 1000
sequence_length = 20
input = tf.random.uniform([number_of_sequences, sequence_length, features], dtype=tf.float32)
output = new_model(input) # shape is (number_of_sequences, sequence_length, features)
predicted = output[:,-1] # shape is (number_of_sequences, 1, features)

形状为(32,2(意味着您的序列长度为32。

批量大小是训练的一个参数(在反向传播误差之前,应该向模型提供多少序列——参见随机梯度下降方法(。它不会影响你的数据(应该是三维的(序列的数量,序列的长度,特征((。

如果只需要预测一个序列,只需将形状张量(1,20,2(输入到模型中即可。

相关内容

  • 没有找到相关文章

最新更新