Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 滑动窗口数据的LSTM预测_Python_Tensorflow_Keras_Lstm - Fatal编程技术网

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)

14703天的数据,每天有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()