TF 上的 Keras,如何在不执行梯度下降的情况下获取每个示例的损失值?

blu*_*ers 1 python keras tensorflow

我有兴趣使用tf.keras.Model实例检查每个示例的损失值,但有以下限制:

  1. 假设我已经调用了model.compile(),关于损失函数的信息就在那里 - 我不想像文档中的这个例子那样明确定义损失
  2. 不执行梯度下降(我知道访问tf.callback.Callbacks 中的损失的选项,但我不想执行 GD)

此外,使用回调获得损失然后重新加载初始权重不是一个有效的解决方案,我想完全避免 GD。

那么有没有办法实现这一目标?我希望看起来像

model = tf.keras.Sequential([....])
model.compile(optimizer=..., loss=...)

single_loss_value = model.get_loss(single_x, single_y)
batch_loss_valujes = model.get_loss(x, y)
Run Code Online (Sandbox Code Playgroud)

spa*_*ian 5

要获得某些样本的损失,您可以使用model.evaluate. 在那里,您可以将xy用作单个样品或批次。

model = tf.keras.Sequential([....])
model.compile(optimizer=..., loss=...)

single_loss_value = model.evaluate(single_x, single_y)
batch_loss_values = model.evaluate(x, y)
Run Code Online (Sandbox Code Playgroud)