gpt4 book ai didi

python - 带有 TF 后端的 Keras : get gradient of outputs with respect to inputs

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

我有一个非常简单的 Keras MLP,我正在尝试获取输出相对于输入的梯度。

我正在使用以下代码:

regressor = Sequential([
Dense(32, input_shape=(n_features,), activation='relu'),
Dense(1)
])
regressor.compile(optimizer=SGD(lr=0.1), loss='mse')

regressor.fit(x, y)

output_tens = regressor.layers[-1].output
input_tens = regressor.layers[0].input

grad = tf.gradients(output_tens, input_tens)
with tf.Session() as sess:
sess.run(grad, feed_dict={input_tens: np.zeros((1, n_features))})

失败并出现以下错误

FailedPreconditionError: Attempting to use uninitialized value dense_7/bias
[[Node: dense_7/bias/read = Identity[T=DT_FLOAT, _class=["loc:@dense_7/bias"], _device="/job:localhost/replica:0/task:0/cpu:0"](dense_7/bias)]]

(堆栈跟踪很长,而且我认为信息量不大,所以我不在此处添加)。

我的做法基本正确吗?我有什么特别需要做的吗?

谢谢!

最佳答案

您需要获取 keras session 才能使其正常工作:

import keras.backend as K

with K.get_session() as sess:
sess.run(grad, feed_dict={input_tens: np.zeros((1, n_features))})

当您实例化一个新 session 时 - 您没有从 keras 训练中初始化变量。

关于python - 带有 TF 后端的 Keras : get gradient of outputs with respect to inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064178/

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