如何利用Tensorflow后端计算Keras上的绝对交叉熵梯度?

2024-10-01 09:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到损失目标的梯度,在我的例子中categorical_cross_entropyw.r.t到NN参数,如'weights'和'bias'。在

这样做的原因是我想实现一个回调函数,以上面的函数为基础,我可以在模型训练时调试它。在

所以,问题来了。在

我目前正在使用生成器方法来拟合、评估和预测数据集。在

Keras中的categorical_cross_entropy损失函数的实现如下:

def categorical_crossentropy(y_true, y_pred):
    return K.categorical_crossentropy(y_true, y_pred)

我能掌握y_pred的唯一方法是在训练结束时评估/预测我的模型。在

所以,我要问的是:

  • 有没有办法让我像上面提到的那样创建一个回调?在
  • 如果有人已经使用categorical_cross_entropy实现了上面的回调,请告诉我如何使其工作?在
  • 最后,如何计算同样的数值梯度?在

目前,这是我用来计算梯度的代码。如果这是对的,那就错了。Link.

^{pr2}$

理想情况下,我想让这个模型不可知论,但即使不是,也没关系。在


Tags: 方法函数模型true目标nn例子entropy
1条回答
网友
1楼 · 发布于 2024-10-01 09:26:36

我可以帮忙做渐变部分。我用这个函数来计算损耗函数w.r.t输出的梯度。在

def get_loss_grad(model, inputs, outputs):
    x, y, sample_weight = model._standardize_user_data(inputs, outputs)
    grad_ce = K.gradients(model.total_loss, model.output)
    func = K.function((model._feed_inputs + model._feed_targets + model._feed_sample_weights), grad_ce)
    return func(x + y + sample_weight)

相关问题 更多 >