8

我是 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 在每个时期都是相同的。应该会少一些。

4

4 回答 4

17

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

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

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

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

于 2018-04-01T21:36:56.990 回答
1

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

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

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

由于您是深度学习的新手,因此这些建议足以检查您的模型是否存在问题。你能检查他们并回复吗?

于 2018-04-01T22:19:28.277 回答
0

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

于 2017-12-03T01:49:47.143 回答
0

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

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

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

于 2022-02-17T05:47:18.767 回答