Keras:我的模型损失和准确性随机降至零

时间:2019-03-19 07:30:43

标签: python tensorflow machine-learning keras deep-learning

对于序列编码器解码器模型,我有一个相当复杂的序列。我遇到一个问题,我的损失和准确性降为零,并且无法重现此错误。它与训练数据无关,因为它发生在不同的集合中。

随着损失逐渐减少,似乎正在学习。以下是之前的样子:

Epoch 1/2
5000/5000 [==============================] - 235s 47ms/step - loss: 0.9825 - acc: 0.7077
Epoch 2/2
5000/5000 [==============================] - 235s 47ms/step - loss: 0.9443 - acc: 0.7177

这是下一个mode.fit()迭代期间的样子:

Epoch 1/2
2882/2882 [==============================] - 136s 47ms/step - loss: 0.7033 - acc: 0.4399
Epoch 2/2
2882/2882 [==============================] - 136s 47ms/step - loss: 1.1921e-07 - acc: 0.0000e+00

此后,损失和准确性保持不变:

Epoch 1/2
5000/5000 [==============================] - 278s 56ms/step - loss: 1.1921e-07 - acc: 0.0000e+00
Epoch 2/2
5000/5000 [==============================] - 279s 56ms/step - loss: 1.1921e-07 - acc: 0.0000e+00

我必须以这种方式进行训练的原因是因为我的输入大小和输出大小都可变。因此,在训练之前,我必须以固定的输入大小来批量制作训练数据。

sgd = optimizers.SGD(lr= 0.015, decay=0.002)
out2 = model.compile(loss='categorical_crossentropy',
             optimizer=sgd,
             metrics=['accuracy'])

我需要使用课程学习来达到句子水平的预测,所以我正在做以下事情: 最初,我训练模型以输出“ 1个单词+结尾”令牌。对此进行培训很好。当我开始训练“ 2个单词+结束”时,就会出现此问题。

在训练了1个单词之后,我保存了模型。然后,我定义一个输出大小为2个单词的新模型,并使用以下代码:

new_model = createModel(...,num_output_words)
new_model.set_weights(old_model.get_weights())

我必须这样做,因为我无法定义输出长度可变的模型。

如有需要,我可以提供更多信息。我在网上找不到任何信息。

0 个答案:

没有答案