首页 > 解决方案 > 模型突然“忘记”它所学的一切,并在大约 110 个 epoch 时停止工作。NaN 损失和 50% 的准确率

问题描述

我已经在我的数据集上测试了 20 多种不同的 LSTM 网络架构,到目前为止还没有任何问题。但是我尝试过的这个模型大约在第 110 个 epoch 左右,它突然擦除了它所学到的所有东西并获得了 NaN 损失(见附件截图)。每次使用此模型时都会发生这种情况。

该模型如下所示:

model = keras.Sequential([
    keras.kayers.Embedding(numberOfWords, embedding_vector_length, input_length=1000),
    keras.layers.Dropout(0.5),
    keras.layers.LSTM(256, dropout = 0.6),
    keras.layers.Dropout(0.6),
    keras.layers.Dense(128),
    keras.layers.Dropout(0.5),
    keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizers.RMSprop(learning_rate=0.001, rho=0.9), loss='binary_crossentropy',
              metrics=['accuracy'])

history = model.fit(x_train, y_train, epochs=700, callbacks=callbacks_list, batch_size=32,
         validation_data=(x_test, y_test))

第 110 个 epoch 后的 NaN 损失和 50% 的准确度

我想我在这里做错了什么,但我没有足够的经验来发现它。有人可以帮我吗?

标签: pythontensorflowmachine-learningkeraslstm

解决方案


在第 6 行指定使用“relu”有效。不太清楚为什么,因为我认为默认值会起作用,但是很好:

keras.layers.Dense(128, activation='relu')

推荐阅读