我正在使用TensorFlow 1.12进行急切的执行,并且我想在训练期间检查调试中不同点的渐变值和权重。 This answer使用TensorBoard来获得各个时期的权重和梯度分布的漂亮图形,这就是我想要的。但是,当我使用Keras' TensorBoard callback时,我得到了:
WARNING:tensorflow:Weight and gradient histograms not supported for eagerexecution, setting `histogram_freq` to `0`.
换句话说,这与急切执行不兼容。还有其他打印渐变和/或维斯的方法吗?大多数非TensorBoard答案似乎都依赖于基于图的执行。
答案 0 :(得分:2)
在急切执行中,您可以直接打印砝码。至于梯度,可以使用tf.GradientTape来获得损失函数相对于某些权重的梯度。这是显示如何打印渐变和权重的示例:
import tensorflow as tf
tf.enable_eager_execution()
x = tf.ones(shape=(4, 3))
y = tf.ones(shape=(4, 1))
dense = tf.layers.Dense(1)
# Print gradients
with tf.GradientTape() as t:
h = dense(x)
loss = tf.losses.mean_squared_error(y, h)
gradients = t.gradient(loss, dense.kernel)
print('Gradients: ', gradients)
# Print weights
weights = dense.get_weights()
print('Weights: ', weights)