基于keras的LSTM不同时间步长预测

基于keras的LSTM不同时间步长预测,keras,lstm,Keras,Lstm,我正在使用keras预测LSTM的时间序列,我意识到我们可以使用与我们过去训练的时间步长不同的数据进行预测。例如: import numpy as np import keras.optimizers from keras.models import Sequential from keras.layers import Dense,Activation,Dropout,TimeDistributed from keras.layers import LSTM Xtrain = np.ran

我正在使用keras预测LSTM的时间序列,我意识到我们可以使用与我们过去训练的时间步长不同的数据进行预测。例如:

import numpy as np 
import keras.optimizers
from keras.models import Sequential
from keras.layers import Dense,Activation,Dropout,TimeDistributed
from keras.layers import LSTM

Xtrain = np.random.rand(10,3,2) #Here timestep is 3
Ytrain = np.random.rand(10,1)

model = Sequential()
model.add(LSTM(input_dim = Xtrain.shape[2],output_dim =10,return_sequences = False))
model.add(Activation("sigmoid"))
model.add(Dense(1))

KerasOptimizer = keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
model.compile(loss="mse", optimizer=KerasOptimizer)
model.fit(Xtrain,Ytrain,nb_epoch = 1,batch_size = 1)

XBis = np.random.rand(10,4,2) #here timestep is 4
XTer = np.random.rand(10,2,2) #here timestep is 2

model.predict(Xtrain)
model.predict(XBis)
model.predict(XBis)

所以我的问题是:为什么会这样?如果我们用
n
timesteps训练一个模型,并使用
n+1
timesteps的数据进行预测,那么该模型可能只使用第一个
n
timesteps。但是,如果我们尝试使用
n-1
timestep进行预测,它是如何工作的?

如果您查看示例中如何定义
LSTM
层,您会注意到,您没有具体说明时间维度的大小,只说明每个时间点上存在的特征数量(
input\u dim
)以及所需输出功能的数量(
output\u dim
)。此外,由于您有
return\u sequences=False
它将只在最后一个时间点输出结果,因此层产生的张量将始终具有形状[batch size]x[output dim](在本例中为10 x 10),丢弃时间维度

因此,时间维度的大小并不真正影响模型的“适用性”;该层将只通过所有可用的时间步骤,并为您提供最后的输出


当然,这并不意味着该模型对于任何输入都一定能很好地工作。如果培训数据中的所有示例都具有大小为
N
的时间维度,但您尝试使用
N+1
N-1
100*N
或其他任何方法进行预测,则可能无法获得可靠的结果。

如果您查看示例中如何定义
LSTM
层,您会注意到,您没有具体说明时间维度的大小,只说明每个时间点存在的特征数量(
input\u dim
)和所需的输出特征数量(
output\u dim
)。此外,由于您有
return\u sequences=False
它将只在最后一个时间点输出结果,因此层产生的张量将始终具有形状[batch size]x[output dim](在本例中为10 x 10),丢弃时间维度

因此,时间维度的大小并不真正影响模型的“适用性”;该层将只通过所有可用的时间步骤,并为您提供最后的输出


当然,这并不意味着该模型对于任何输入都一定能很好地工作。如果培训数据中的所有示例都有一个大小为
N
的时间维度,但您尝试使用
N+1
N-1
100*N
或其他任何方法进行预测,则可能无法获得可靠的结果。

如果每个实例都有不同的时间步长,该怎么办?我已经购买了历史7天的购买,但每个客户购买的物品数量不同。如果每个实例的时间步长不同怎么办?我购买了历史7天购买,但每个客户购买的物品数量不同。