Keras在每个时代都给予相同的损失



我是keras的新手。

我在一个

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

例如:

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在每个时代都是一样的。它应该更少。

我也遇到了这个问题。经过深思熟虑,我发现这是我在输出层上的激活函数

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

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'))

我会关注您正在尝试解决的问题以及确保您的激活函数是它们需要的所需的输出。

尝试将

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

实际上不清楚是

学习率还是模型复杂性的问题,您能否用这些说明进一步解释一下:

  1. 您的数据大小是多少,它是关于什么的?
  2. 您的模型有多复杂?我们可以将您的复杂性与分析数据进行比较。如果数据太大,则需要更复杂的模型。
  3. 您是否规范化了输出?对于输入,这没什么大不了的,因为非规范化会产生结果,但是如果您的输出是一些大于 1 的数字,则需要规范化您的数据。如果你检查最后一层的模型激活函数,它们通常是sigmoid,softmax,tanh,经常将输出压缩到0-1和-1 - 1。您需要根据上次激活函数对数据进行规范化,然后反向相乘以获得实际结果。

由于您不熟悉深度学习,因此这些建议足以检查您的模型是否存在问题。你能检查一下并回复吗?

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

我遇到了同样的问题,并且使用以下模型

model = Sequential([
    Dense(10, activation ='relu', input_shape=(n_cols, )),
    Dense(3, activation ='softmax')
    ])

意识到我的问题实际上是一个回归问题,并且使用"softmax"作为最终层激活(适用于分类问题)而不是其他东西。当我修改下面的代码时,我能够解决在每个时期获得相同损失值的问题

model = Sequential([
    Dense(10, activation ='relu', input_shape=(n_cols, )),
    Dense(3, activation ='relu'),
    Dense(1)
    ])
因此,问题

实际上是因为对回归问题使用了与分类相关的激活函数,反之亦然。您可能想检查您是否犯了同样的错误。

最新更新