Using this simple model, I try to predict the missing values (future data).
past_input = tf.keras.Input(shape=(None, x_past.shape[2]), name='past_inputs')
forcast_input = tf.keras.Input(shape=(None, x_forcast.shape[2]), name='forcast_inputs')
forcast_masked = tf.keras.layers.Masking(mask_value=-9999)(forcast_input)
encoder_last_h1, encoder_last_h2, encoder_last_c = tf.keras.layers.LSTM(60, return_sequences=False,
return_state=True,
name='encoder')(past_input)
decoder = tf.keras.layers.LSTM(60, activation='tanh',
kernel_initializer= tf.keras.initializers.glorot_uniform(),
return_state=False,
return_sequences=False,
name='decoder')(forcast_masked, initial_state=[encoder_last_h1, encoder_last_c])
out = tf.keras.layers.Dense(NB_OUTPUTS,
activation='linear',
kernel_initializer= tf.keras.initializers.he_uniform(),
name='Output')(decoder)
model = tf.keras.Model(inputs=[past_input, forcast_input], outputs=out)
tf.keras.utils.plot_model(model, show_shapes=True, show_layer_names=True, to_file='architecture.png')
optimizer = tf.keras.optimizers.legacy.Adam(learning_rate=0.001)
early_stop = tf.keras.callbacks.EarlyStopping(monitor=['loss', 'val_loss'],
patience=10,
verbose=1,
mode='min',
model.compile(optimizer=optimizer, loss='mae')
my input and output looklike this:
|--past inputs--|--futur/forcast input---|
x-3 x-2 x-1 x x+1 x+2 x+3 ... x+10
.3 .2 .2 .1 .15 .2 .2 ... .5
.3 .3 .35 .1 .2 .25 .15 ... .3
.12 .13 .2 .2 -99 -99 -99 -99 <---- only this line as output too
|---------output-------|
where -99 are masked and must be replace by the predict values
When I try to predict after trainning, I only get a 10x lagged of the same inference.