keras loss 在新纪元开始时随机跳到零
keras loss jumps to zero randomly at the start of a new epoch
我正在训练一个具有多重损失的网络,并使用生成器创建数据并将数据馈送到我的网络中。
我检查了数据的结构,总体上看起来不错,而且大多数时候它的训练也和预期的差不多,但是几乎每次都是在随机时期,每次预测的训练损失突然从 say
跳转
# End of epoch 3
loss: 2.8845
到
# Beginning of epoch 4
loss: 1.1921e-07
我认为它可能是数据,但是,据我所知,数据通常很好而且更可疑,因为这将发生在随机时期(可能是因为在 SGD 期间选择了随机数据点?),但会在接下来的培训中坚持。就好像在第 3 个时期,训练损失减少到 1.1921e-07
那么它将在第 4 个时期、第 5 个时期等继续这种方式。
但是,有时它到了第 5 个时期还没有完成,然后可能会在第 6 个或第 7 个时期完成。
除了数据之外,是否有任何可行的原因可能导致这种情况?有没有可能是一些模糊的数据点导致这种情况如此之快?
谢谢
编辑:
结果:
300/300 [==============================] - 339s - loss: 3.2912 - loss_1: 1.8683 - loss_2: 9.1352 - loss_3: 5.9845 -
val_loss: 1.1921e-07 - val_loss_1: 1.1921e-07 - val_loss_2: 1.1921e-07 - val_loss_3: 1.1921e-07
此后的下一个 epoch 都有训练损失 1.1921e-07
不完全确定这个答案是否令人满意,但我的发现似乎表明同时使用多个 categorical_crossentropy 损失似乎会导致网络非常不稳定?将其换成其他损失函数可以解决数据保持不变的问题。
我正在训练一个具有多重损失的网络,并使用生成器创建数据并将数据馈送到我的网络中。
我检查了数据的结构,总体上看起来不错,而且大多数时候它的训练也和预期的差不多,但是几乎每次都是在随机时期,每次预测的训练损失突然从 say
跳转# End of epoch 3
loss: 2.8845
到
# Beginning of epoch 4
loss: 1.1921e-07
我认为它可能是数据,但是,据我所知,数据通常很好而且更可疑,因为这将发生在随机时期(可能是因为在 SGD 期间选择了随机数据点?),但会在接下来的培训中坚持。就好像在第 3 个时期,训练损失减少到 1.1921e-07
那么它将在第 4 个时期、第 5 个时期等继续这种方式。
但是,有时它到了第 5 个时期还没有完成,然后可能会在第 6 个或第 7 个时期完成。
除了数据之外,是否有任何可行的原因可能导致这种情况?有没有可能是一些模糊的数据点导致这种情况如此之快?
谢谢
编辑:
结果:
300/300 [==============================] - 339s - loss: 3.2912 - loss_1: 1.8683 - loss_2: 9.1352 - loss_3: 5.9845 -
val_loss: 1.1921e-07 - val_loss_1: 1.1921e-07 - val_loss_2: 1.1921e-07 - val_loss_3: 1.1921e-07
此后的下一个 epoch 都有训练损失 1.1921e-07
不完全确定这个答案是否令人满意,但我的发现似乎表明同时使用多个 categorical_crossentropy 损失似乎会导致网络非常不稳定?将其换成其他损失函数可以解决数据保持不变的问题。