Emi*_*oss 6 gradient-descent tensorflow eager-execution
我在 Eager Execution 中使用 TensorFlow 1.12,我想在训练期间检查不同点的梯度值和权重以进行调试。这个答案使用 TensorBoard 来获得很好的权重和梯度分布图,这正是我想要的。但是,当我使用Keras 的 TensorBoard callback 时,我得到了这个:
WARNING:tensorflow:Weight and gradient histograms not supported for eagerexecution, setting `histogram_freq` to `0`.
Run Code Online (Sandbox Code Playgroud)
换句话说,这与急切执行不兼容。有没有其他方法可以打印渐变和/或权重?大多数非 TensorBoard 答案似乎依赖于基于图的执行。
在急切执行中,您可以直接打印权重。至于梯度,您可以使用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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1356 次 |
最近记录: |