Python 滑动窗口数据的LSTM预测
我的培训数据是用户日常数据的重叠滑动窗口。它的形状是Python 滑动窗口数据的LSTM预测,python,tensorflow,keras,lstm,Python,Tensorflow,Keras,Lstm,我的培训数据是用户日常数据的重叠滑动窗口。它的形状是(1470,3,256,18): 1470批3天的数据,每天有256个18个特征样本 我的目标形状是(1470,): 每个批次的标签值 我想训练LSTM预测[3天批次]->[1个目标] 对于缺少256个样本的天数,256天样本用-10填充 我编写了以下代码来构建模型: from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM,
(1470,3,256,18)
:1470批3天的数据,每天有256个18个特征样本 我的目标形状是
(1470,)
:
每个批次的标签值
我想训练LSTM预测[3天批次]->[1个目标]
对于缺少256个样本的天数,256天样本用-10填充
我编写了以下代码来构建模型:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dropout,Dense,Masking,Flatten
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.callbacks import TensorBoard,ModelCheckpoint
from tensorflow.keras import metrics
def build_model(num_samples, num_features):
opt = RMSprop(0.001)
model = Sequential()
model.add(Masking(mask_value=-10., input_shape=(num_samples, num_features)))
model.add(LSTM(32, return_sequences=True, activation='tanh'))
model.add(Dropout(0.3))
model.add(LSTM(16, return_sequences=False, activation='tanh'))
model.add(Dropout(0.3))
model.add(Dense(16, activation='tanh'))
model.add(Dense(8, activation='tanh'))
model.add(Dense(1))
model.compile(loss='mse', optimizer=opt ,metrics=['mae','mse'])
return model
我可以看出这些形状是不兼容的,但我不知道如何更改代码以适应我的问题 任何帮助都将不胜感激 更新:我对数据进行了如下修改:
train_data.reshape(1470*3, 256, 18)
是吗?我认为您正在寻找时间分布(LSTM(…)()
train_data.reshape(1470*3, 256, 18)
day, num_samples, num_features = 3, 256, 18
model = Sequential()
model.add(Masking(mask_value=-10., input_shape=(day, num_samples, num_features)))
model.add(TimeDistributed(LSTM(32, return_sequences=True, activation='tanh')))
model.add(Dropout(0.3))
model.add(TimeDistributed(LSTM(16, return_sequences=False, activation='tanh')))
model.add(Dropout(0.3))
model.add(Dense(16, activation='tanh'))
model.add(Dense(8, activation='tanh'))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam' ,metrics=['mae','mse'])
model.summary()