我正在做一个需要时间序列预测(回归)的项目,我在 Keras/TF-gpu 中使用具有第一个 1D 卷积层的 LSTM 网络,如下所示:
model = Sequential()
model.add(Conv1D(filters=60, activation='relu', input_shape=(x_train.shape[1], len(features_used)), kernel_size=5, padding='causal', strides=1))
model.add(CuDNNLSTM(units=128, return_sequences=True))
model.add(CuDNNLSTM(units=128))
model.add(Dense(units=1))
所以我决定添加 dropout 层,首先我添加了 0.1、0.3 和最后 0.5 速率的层:
model = Sequential()
model.add(Dropout(0.5))
model.add(Conv1D(filters=60, activation='relu', input_shape=(x_train.shape[1], len(features_used)), kernel_size=5, padding='causal', strides=1))
model.add(Dropout(0.5))
model.add(CuDNNLSTM(units=128, return_sequences=True))
model.add(Dropout(0.5))
model.add(CuDNNLSTM(units=128))
model.add(Dense(units=1))
但是我认为它对网络学习过程没有影响,即使 0.5 是相当大的 dropout 率:

辍学是否可能对 LSTM 的训练过程几乎没有影响,或者我在这里做错了什么?
我还想补充一点,当我添加 dropout 层时,训练时间只会增加一点(即从 1540 秒到 1620 秒)。




