【发布时间】:2021-01-09 09:15:07
【问题描述】:
我需要使用 LSTM 进行 seq2seq 预测。由于在时间步长方面我有不同长度的序列,我用 9999.0 填充值,然后我使用遮罩层来忽略 9999 值。但是,我的模型也不会忽略它们并预测填充值。 我使用了下面的代码。
verbose, epochs, batch_size = 0, 70, 16
n_timesteps, n_features, n_outputs = x_train.shape[1], x_train.shape[2], y_train.shape[2]
print(n_timesteps, n_features, n_outputs )
# define model
model_lstm = Sequential()
model.add(tf.keras.layers.Masking(mask_value=9999.,input_shape=(n_timesteps, n_features)))
model_lstm.add(LSTM(200, activation='relu', input_shape=(n_timesteps, n_features)))
model_lstm.add(Dense(100, activation='relu'))
model_lstm.add(Dense(n_outputs))
model_lstm.compile(loss='mse', optimizer='adam')
# fit network
model_lstm.fit(x_train,y_train, epochs=epochs, batch_size=batch_size, verbose=verbose)
y_predict = model.predict(x_test)
输入示例
输出示例
估计输出示例 - y_test -
如您所见,我的模型预测的值与预期相差甚远。你建议我怎么做?是遮罩层偏向模型吗?
【问题讨论】: