【发布时间】:2020-07-06 06:04:27
【问题描述】:
我有一个时间序列数据集的训练数据集,如下所示:
import numpy as np
import pandas as pd
train_df = pd.DataFrame(np.random.randint(0,100,size=(100, 16)))
train_df.columns=['var1(t-3)','var2(t-3)','var3(t-3)','var4(t-3)','var1(t-2)','var2(t-2)','var3(t-2)','var4(t-2)','var1(t-1)','var2(t-1)','var3(t-1)','var4(t-1)','var1(t)','var2(t)','var3(t)','var4(t)']
train_X=train_df.drop(['var1(t)'],axis=1)
train_y=train_df[['var1(t)']]
因此,正如您在训练中看到的那样,我正在输入网络,其中包含所有 4 个变量的过去三个时间步长以及其余三个变量的当前时间步长(最多 15 个变量)。
我想在 Keras 中使用具有功能 API 的 LSTM 进行训练,因为在我的情况下我不能使用顺序 API。所以我尝试了以下方法:
import tensorflow
from tensorflow.keras.utils import plot_model
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import LSTM
visible = Input(shape=(100,15))
hidden1 = LSTM(10)(visible)
hidden2 = Dense(10, activation='relu')(hidden1)
output = Dense(1, activation='sigmoid')(hidden2)
model = Model(inputs=visible, outputs=output)
model.compile(loss='mae', optimizer='adam')
history = model.fit(train_X, train_y, batch_size=64, epochs=2, validation_split=0.2)
然后我重塑火车并进行如下测试:
train_X=train_X.reshape(train_X.shape[0],1,train_X.shape[1])
train_y = train_y.reshape(train_y.shape[0],1)
train_X shape is (100, 1, 15)
train_y shape is (100,1)
但这给出了一个非常大的 MAPE 和 RMSE。所以我认为我的重塑在这里是错误的。
感谢任何帮助。
【问题讨论】:
-
您可以在问题中添加
train_X和train_y形状吗? -
我已经添加了它,它也可以从我的问题中重现。
标签: python pandas numpy deep-learning tensorflow2.0