【发布时间】:2020-07-01 17:53:16
【问题描述】:
我正在训练一个 LSTM 自动编码器,但损失函数会随机上升,如下图所示: 我尝试了多种方法来防止这种情况,调整批量大小,调整层中的神经元数量,但似乎没有任何帮助。我检查了我的输入数据以查看它是否包含 null / infinity 值,但它没有,它也被标准化。这是我的参考代码:
model = Sequential()
model.add(Masking(mask_value=0, input_shape=(430, 3)))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2, activation='relu'))
model.add(RepeatVector(430))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(3)))
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
context_paths = loadFile()
X_train, X_test = train_test_split(context_paths, test_size=0.20)
history = model.fit(X_train, X_train, epochs=1, batch_size=4, verbose=1, validation_data=(X_test, X_test))
损失函数在随机时间点爆炸,有时更快,有时更晚。我阅读了this 线程中可能存在的问题,但是在尝试了多种方法之后,我不知道该怎么做才能防止损失函数随机飙升。任何建议表示赞赏。除此之外,我可以看到我的准确性并没有提高很多,所以问题可能是相互关联的。
【问题讨论】:
-
今天同样的问题!我不知道为什么!我正在使用 Adam 作为基础优化器构建 LSTM 自动编码器。
标签: python keras lstm autoencoder loss-function