gpt4 book ai didi

python - 您能解释一下 keras 每次迭代的输出吗?

转载 作者:行者123 更新时间:2023-11-30 08:39:34 24 4
gpt4 key购买 nike

当我使用 keras 使用方法 fit_generator 训练顺序模型时,我看到了此输出

Epoch 1/N_epochs

n/N [====================>..............] - ETA xxxx - loss: yyyy

我注意到损失随着步数的增加而逐渐减少,正如预期的那样。我的问题是,我还注意到,当一个时期结束而另一个时期开始时,损失的值与我在上一个时期结束时看到的损失值有很大不同。

为什么会这样呢?我认为纪元和每个纪元的步数是任意值,例如,使用 10 个纪元和 1000 个步骤应该与使用 1000 个纪元和 10 个步骤相同。但是 Keras 2.0 中的一个 epoch 和下一个 epoch 之间到底发生了什么?

免责声明:我知道纪元的定义以及如何使用批处理生成器确定步骤数,但我的数据太多,无法应用此规则。

最佳答案

Keras 在 epoch 期间计算的损失是在线累积和估计的。因此它包括模型在不同权重更新后的损失。

让我们用一个简单的例子来澄清:假设模型只是在改进(每次权重更新都会带来更好的准确性和损失),并且每个时期包含 2 次权重更新(每个最小批处理是训练的一半)数据集)。

在第 X 纪元,处理第一个小批量,结果是损失分数 2.0。更新权重后,模型运行第二个小批量,导致损失分数为 1.0(仅针对小批量)。但是您会看到损失从 2.0 变为 1.5(所有数据集的平均值)。

现在我们开始纪元 X+1,但它发生在另一次权重更新之后,导致第一个小批量损失 0.8,如您所见。等等……

在训练期间也会发生同样的事情,只是显然,并非所有变化都是积极的。

关于python - 您能解释一下 keras 每次迭代的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com