我想创建一个"序列"模型(您可能已经猜到的时间序列模型(,它采用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(输入到模型中即可。