Je veux utiliser un réseau neuronal LSTM avec keras pour prévoir des groupes de séries temporelles et j'ai des difficultés à faire correspondre le modèle à ce que je veux. Les dimensions de mes données sont:Dimensions ne correspondant pas dans keras Modèle LSTM
tenseur d'entrée: (data length, number of series to train, time steps to look back)
tenseur de sortie: (data length, number of series to forecast, time steps to look ahead)
Note: Je veux garder les dimensions exactement comme ça, pas de transposition .
Un code de données factice qui reproduit le problème est:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, TimeDistributed, LSTM
epoch_number = 100
batch_size = 20
input_dim = 4
output_dim = 3
look_back = 24
look_ahead = 24
n = 100
trainX = np.random.rand(n, input_dim, look_back)
trainY = np.random.rand(n, output_dim, look_ahead)
print('test X:', trainX.shape)
print('test Y:', trainY.shape)
model = Sequential()
# Add the first LSTM layer (The intermediate layers need to pass the sequences to the next layer)
model.add(LSTM(10, batch_input_shape=(None, input_dim, look_back), return_sequences=True))
# add the first LSTM layer (the dimensions are only needed in the first layer)
model.add(LSTM(10, return_sequences=True))
# the TimeDistributed object allows a 3D output
model.add(TimeDistributed(Dense(look_ahead)))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
model.fit(trainX, trainY, nb_epoch=epoch_number, batch_size=batch_size, verbose=1)
Ce trows:
Exception: Erreur lorsque la cible du modèle de vérification: prévu timedistributed_1 avoir la forme (Aucun, 4 , 24) mais le tableau a la forme (100, 3, 24)
Le problème semble être lors de la définition de la couche TimeDistributed
. Comment définir le calque TimeDistributed
pour qu'il compile et s'entraîne?
Je fais la transposition car pour une même série temporelle, cette transposition rend la prévision beaucoup plus précise. J'ai eu l'idée de suivre ce tutoriel: http://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/ Mais je suppose qu'il y a encore du travail à faire pour beaucoup-à- beaucoup de relations –