gpt4 book ai didi

python - 如何计算损失梯度 w.r.t 以模拟 Keras 模型中的输入?

转载 作者:太空宇宙 更新时间:2023-11-04 04:25:09 25 4
gpt4 key购买 nike

我想要实现的是计算交叉熵相对于输入值 x 的梯度。在 TensorFlow 中,我对此没有任何问题:

ce_grad = tf.gradients(cross_entropy, x)

但是随着我的网络越来越大,我转而使用 Keras 来更快地构建它们。但是,现在我真的不知道如何实现上述目标?有没有办法从存储我的整个模型的 model 变量中提取交叉熵和输入张量?

为清楚起见,我的cross_entropy 是:

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels = y_, logits=y_conv))
<tf.Tensor 'Mean:0' shape=() dtype=float32>

x:

x = tf.placeholder(tf.float32, shape = [None,784])
<tf.Tensor 'Placeholder:0' shape=(?, 784) dtype=float32>

最佳答案

我们可以编写一个后端函数来做到这一点。我们使用 K.categorical_crossentropy 计算损失并使用 K.gradients 计算其相对于模型输入的梯度:

from keras import backend as K

# an input layer to feed labels
y_true = Input(shape=labels_shape)
# compute loss based on model's output and true labels
ce = K.mean(K.categorical_crossentropy(y_true, model.output))
# compute gradient of loss with respect to inputs
grad_ce = K.gradients(ce, model.inputs)
# create a function to be able to run this computation graph
func = K.function(model.inputs + [y_true], grad_ce)

# usage
output = func([model_input_array(s), true_labels])

关于python - 如何计算损失梯度 w.r.t 以模拟 Keras 模型中的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53649837/

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