keras在每个时代都给予同样的损失

时间:2016-02-21 18:39:42

标签: conv-neural-network keras

我是keras的新手。

我在数据集上运行它,我的目标是减少logloss。 对于每个时代,它给我相同的损失价值。我是否在正确的轨道上感到困惑。

例如:

Epoch 1/5
91456/91456 [==============================] - 142s - loss: 3.8019 - val_loss: 3.8278
Epoch 2/5
91456/91456 [==============================] - 139s - loss: 3.8019 - val_loss: 3.8278
Epoch 3/5
91456/91456 [==============================] - 143s - loss: 3.8019 - val_loss: 3.8278
Epoch 4/5
91456/91456 [==============================] - 142s - loss: 3.8019 - val_loss: 3.8278
Epoch 5/5
91456/91456 [==============================] - 142s - loss: 3.8019 - val_loss: 3.8278

这里3.8019在每个时代都是一样的。它应该更少。

3 个答案:

答案 0 :(得分:5)

我也遇到了这个问题。经过深思熟虑后,我发现这是我输出图层上的激活功能

我有这个模型来预测二元结果:

model = Sequential()
model.add(Dense(16,input_shape=(8,),activation='relu'))
model.add(Dense(32,activation='relu'))
model.add(Dense(32,activation='relu'))
model.add(Dense(1, activation='softmax'))

我需要这个二进制交叉熵

model = Sequential()
model.add(Dense(16,input_shape=(8,),activation='relu'))
model.add(Dense(32,activation='relu'))
model.add(Dense(32,activation='relu'))
model.add(Dense(1, activation='sigmoid'))

我会关注您尝试解决的问题以及确保您的激活功能是他们所需要的输出。

答案 1 :(得分:0)

通常,当您训练的模型没有足够的容量(或成本函数不合适)时会出现此问题。或者在某些情况下,我们错误地输入模型的数据没有正确准备,因此每个样本的标签可能不正确,这使得模型无能为力,无法减少损失。

答案 2 :(得分:0)

尝试将学习率降低到0.0001并使用Adam。你的学习率是多少?

实际上不清楚它是否存在学习速度或模型复杂性的问题,您能否用这些说明进一步解释:

  1. 您的数据大小是多少,是什么?
  2. 你模特的复杂程度是多少?我们可以将您的复杂性与分析数据进行比较。如果您的数据太大,则需要更复杂的模型。
  3. 您的输出正常化了吗?对于输入,它不是一个大问题,因为非标准化给出结果,但如果你的输出是一些大于1的数字,你需要规范化你的数据。如果检查模型的最后一层激活函数,它们通常是sigmoid,softmax,tanh经常将输出压缩到0-1和-1-1。您需要根据上次激活函数对数据进行标准化,并且然后反向乘以它们以获得真实的结果。
  4. 由于您不熟悉深度学习,因此这些建议足以检查您的模型是否存在问题。你能检查一下并回复吗?