我有一个非常简单的 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)]]
(堆栈跟踪很长,而且我认为信息量不大,因此我不会在此处添加它)。
我的做法基本正确吗?有什么特别的事我必须做吗?
Thanks!
你需要得到你的keras
会话以使其工作:
import keras.backend as K
with K.get_session() as sess:
sess.run(grad, feed_dict={input_tens: np.zeros((1, n_features))})
当您实例化一个新会话时 - 您没有初始化变量keras
训练。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)