【发布时间】:2023-04-08 03:07:02
【问题描述】:
我正在尝试在一些时间序列集上运行 RNN/LSTM 网络。应该提到的是,时间序列正在被分类。我有大约 600 个不同的时间序列,每个都有 930 个时间步长,其中包含特征。我已将我的数据结构化为一个 numpy 3D 数组,其结构如下:
X = [666 observations/series, 930 timesteps in each observation, 15 features]
Y = [666 observations/series, 930 timesteps in each observation, 2 features]
对于训练和验证数据,我将数据拆分为 70/30。所以 Train_X = [466, 930, 15] 和 Train_Y = [200, 930, 2]。
我的网络收到一个错误,说它期望输入是二维的,并且它得到了一个形状为 (466, 930, 2) 的数组。我的代码如下:
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import mean_squared_error
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Bidirectional
Train_X = new_ped_data[0:466]
Test_X = new_ped_data[466:]
Train_Y = new_ped_valid_data[0:466]
Test_Y = new_ped_valid_data[466:]
model = Sequential()
model.add(Bidirectional(LSTM(20, return_sequences=True),
input_shape=Train_X.shape[1:]))
model.add(Bidirectional(LSTM(10)))
model.add(Dense(5))
model.compile(loss='mae',
optimizer='rmsprop')
model.fit(Train_X, Train_Y, epochs = 30, batch_size = 32,
validation_data =(Test_X, Test_Y))
我只是想让模型运行。完成后,我将调整架构和拟合参数。我应该提到,分类输出之一可能不是必需的。关于如何设置架构以便在输入时间序列时我将获得每个时间步的网络分类值的任何建议?
Error was: ValueError: Error when checking target: expected dense_9 to
have 2 dimensions, but got array with shape (466, 930, 2)
【问题讨论】:
标签: python numpy machine-learning keras recurrent-neural-network