我正在尝试训练 Tensorflow Recommenders 模型,我惊讶地发现 fit() 方法返回的训练损失与训练时打印的损失不匹配(见图)。第一张图(见下文)显示了 fit() 方法的打印输出,而第二张图显示了总验证损失(与打印输出匹配)和总训练损失,与第一张截图。
为什么它们不相等?为什么图1中的“loss”和“total_loss”之间存在差异?
我发现以下线程:相关线程,但按照建议包括回调并没有解决问题。我不使用任何自定义形式的损失函数,也不对提供的示例进行太多更改(https://www.tensorflow.org/recommenders/examples/deep_recommenders)。
这是我的代码:
model.compile(optimizer=tf.keras.optimizers.Adagrad(learning_rate=0.01))
model_fitted = model.fit(
train_df.shuffle(20_000, seed=42, reshuffle_each_iteration=True).batch(256).cache(),
epochs=30,
validation_data=val_df.batch(256).cache(),
validation_freq=1,
callbacks=[
tf.keras.callbacks.ProgbarLogger(
count_mode="steps",
stateful_metrics=["loss"]
),
]
)
拟合和注销损失时发生的情况是代码在写入控制台之前对数字进行舍入和剪辑。
这是什么意思?
例如67.88265991210938 变为
67.8827
这意味着它们确实是相同的数字,但精度较低。