gpt4 book ai didi

python - 如何使用 Tensorflow 后端在 Keras 上获取 categorical_cross_entropy 的梯度?

转载 作者:行者123 更新时间:2023-11-28 19:03:38 24 4
gpt4 key购买 nike

我正在尝试获取损失目标的梯度,在我的例子中是 categorical_cross_entropy w.r.t 到 NN 参数,例如“权重”和“偏差”。

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

所以,问题来了。

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

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.

def symbolic_gradients(model, input, output):
grads = K.gradients(model.total_loss, model.trainable_weights)
inputs = model.model._feed_inputs + model.model._feed_targets +
model.model._feed_sample_weights
fn = K.function(inputs, grads)

return fn([input, output, np.ones(len(output))])

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

最佳答案

我可以帮助处理渐变部分。我正在使用此函数来计算损失函数 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)

关于python - 如何使用 Tensorflow 后端在 Keras 上获取 categorical_cross_entropy 的梯度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49803266/

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