12个时期后训练损失增加

时间:2018-04-02 18:08:31

标签: tensorflow neural-network keras

我有一个模型,学会在7-14个时期之后几乎以100%的准确度进行分类(二进制分类)但在达到0.0004的最小损失之后,在下一个时期它会跳到7.5(这意味着它有50%的几率正确分类,同样有机会)然后在所有后续时期保持在7.附近。

我使用adam optimiser来处理学习率。

如何防止培训损失增加?

SGD优化器不会发生这种巨大的跳跃。

inputs = Input(shape=(X_train.shape[1],))
Dx = Dense(32, activation="relu")(inputs)
Dx = Dense(32, activation="relu")(Dx)
for i in range(20):
    Dx = Dense(32, activation="relu")(Dx)
Dx = Dense(1, activation="sigmoid")(Dx)
D = Model(input=[inputs], output=[Dx])
D.compile(loss="binary_crossentropy", optimizer="adam")

D.fit(X_train, y_train, nb_epoch=20)

2 个答案:

答案 0 :(得分:1)

对于完全连接的体系结构,您的网络非常深。您最有可能受到vanishing- or exploding gradient的打击,即由重复乘以非常小或非常大的数字引起的数值问题。我建议使用一个较浅但较宽的网络,在我的经验中,像2-3层这样的密集层通常就足够了。如果您希望使用更深的体系结构,可以尝试使用skip connections之类的东西。

答案 1 :(得分:0)

这可能来自小批量。您可以尝试增加批量大小。 referring to this.