如何获得关于 Tensorflow 中激活的损失梯度
How to get the gradients of loss with respect to activations in Tensorflow
在cifar10
例子中,关于参数的损失梯度可以计算如下:
grads_and_vars = opt.compute_gradients(loss)
for grad, var in grads_and_vars:
# ...
有没有办法得到关于激活(不是参数)的损失梯度,并在 Tensorboard 中观察它们?
您可以使用 tf.gradients()
函数计算任何标量张量相对于任何其他张量的梯度(假设梯度是为这两个张量之间的所有操作定义的):
activations = ...
loss = f(..., activations) # `loss` is some function of `activations`.
grad_wrt_activations, = tf.gradients(loss, [activation])
在 TensorBoard 中将其可视化通常很棘手,因为 grad_wrt_activation
是(通常)与 activation
具有相同形状的张量。添加 tf.histogram_summary()
操作可能是可视化
的最简单方法
# Adds a histogram of `grad_wrt_activations` to the graph, which will be logged
# with the other summaries, and shown in TensorBoard.
tf.histogram_summary("Activation gradient", grad_wrt_activations)
在cifar10
例子中,关于参数的损失梯度可以计算如下:
grads_and_vars = opt.compute_gradients(loss)
for grad, var in grads_and_vars:
# ...
有没有办法得到关于激活(不是参数)的损失梯度,并在 Tensorboard 中观察它们?
您可以使用 tf.gradients()
函数计算任何标量张量相对于任何其他张量的梯度(假设梯度是为这两个张量之间的所有操作定义的):
activations = ...
loss = f(..., activations) # `loss` is some function of `activations`.
grad_wrt_activations, = tf.gradients(loss, [activation])
在 TensorBoard 中将其可视化通常很棘手,因为 grad_wrt_activation
是(通常)与 activation
具有相同形状的张量。添加 tf.histogram_summary()
操作可能是可视化
# Adds a histogram of `grad_wrt_activations` to the graph, which will be logged
# with the other summaries, and shown in TensorBoard.
tf.histogram_summary("Activation gradient", grad_wrt_activations)