我无法使用Keras将数据分类为正确的RNN格式。我有一个22列,1344行的csv文件。我的数据是以30分钟的间隔记录的连续变量,数量超过……
您可以直接将数据提供给LSTM,而无需使用嵌入层。
1344行=>因此,我假设每列22列是在某个时间点读取的。
对于input_shape,有三个部分:
input_shape(1,48,22)=>批量大小= 1,时间步长= 48,输入特征大小= 22。
批量大小是可选的。 'time-steps'是您希望用于进行预测的过去时间点数。在下面的示例中,48表示过去24小时的数据将用于预测。因此,您必须将1344行数据重塑为以下内容:
第一个样本=第1 - 48行
第二个样本=第2 - 49行,依此类推。
model.add(LSTM(21, input_shape=(48,22),kernel_initializer='normal',activation='relu', return_sequences=True)) # Other layers remain the same as in your first code snippet print(model.predict(np.zeros((1,48,22)))) # Feed dummy sample to network [[0. 0. 0. 0. 0. 0. 0. 0.]] def create_dataset(dataset, look_back): dataX, dataY = [], [] for i in range(len(dataset)-look_back): dataX.append(dataset[i:(i+look_back)]) # all 22 columns for X dataY.append(dataset[i + look_back, 0:8]) # first 8 columns for Y, just as an example return np.array(dataX), np.array(dataY) csv_data = np.random.randn(1344,22) # simulate csv data X, Y = create_dataset(csv_data, 48) print(X.shape, Y.shape) # (1296, 48, 22) (1296, 8) model.fit(X, Y)
余弦波预测的简单示例 - 易于使用.create_dataset函数来自此链接。 https://github.com/sachinruk/PyData_Keras_Talk/blob/master/cosine_LSTM.ipynb
关于重塑数据: https://machinelearningmastery.com/reshape-input-data-long-short-term-memory-networks-keras/