【发布时间】:2020-02-05 19:52:41
【问题描述】:
这几天我一直在努力在 Keras2 的调试模式下简单地查看图层的渐变。不用说,我已经尝试过如下代码:
import Keras.backend as K
gradients = K.gradients(model.output, model.input)
sess = tf.compat.v1.keras.backend.get_session()
evaluated_gradients = sess.run(gradients, feed_dict={model.input:images})
或
evaluated_gradients = sess.run(gradients, feed_dict{model.input.experimantal_ref():images})
或
with tf.compat.v1.Session(graph=tf.compat.v1.keras.backend.get_default_graph())
或使用
的类似方法tf.compat.v1
这都导致以下错误:
RuntimeError:会话图为空。向图中添加操作 在调用 run() 之前。
我认为这应该是任何深度学习包都可以提供的最基本的工具,奇怪的是为什么在 Keras2 中似乎没有简单的方法来做到这一点。有什么想法吗?
【问题讨论】:
-
您正在混合
keras和tf.keras,这通常不起作用。选择两者之一并坚持下去。 -
@DanielMöller 但单独的 keras2 也没有 set_session ,它不允许我看到张量的内部。我应该怎么做?
-
然后选择
tf.keras而不是keras。 -
如果您正在查看带有数据的张量(开启急切模式),那么您不需要接触会话,只需直接使用
tf.keras.gradients。你也可以试试渐变胶带。此自定义训练循环中有磁带示例:tensorflow.org/tutorials/customization/…
标签: tensorflow keras tensorflow2.0 keras-2