- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 optimizer.minimize(loss, grad_loss=)
中的 grad_loss
参数来修改具有现有梯度的网络梯度。我关注了这里的评论: Use of grads_ys parameter in tf.gradients - TensorFlow
我想运行一个玩具示例,我在其中重新创建了 grad_ys
的默认 1
值,如文档中指定的那样。
这里是相关的代码段:
grads_and_vars = optimizer.compute_gradients(loss_op)
vars_with_grad = [v for g, v in grads_and_vars if g is not None]
grad_loss = []
for grad,var in grads_and_vars:
grad_loss.append(tf.ones_like(grad))
train_op = optimizer.minimize(loss_op, grad_loss=grad_loss)
第一部分使用 compute_gradients
提取梯度。最后一行计算损失函数 loss_op
的梯度,但尝试对梯度使用 1
填充向量。据我所知,这应该与不带 grad_loss
参数的 funning minimize
类似。
不幸的是,这失败了,因为它期望 grad_loss
是一个张量(并且有一个数据类型)而不是一个列表。查看 gradients_impl.py
我发现该函数期望 grad_loss
与 loss
具有相同的维度(在本例中为标量) .
对于这个简单示例中的任何帮助,我将不胜感激 - 如何以这种方式将元素添加到渐变中?
编辑:我想这个问题归结为 grad_loss
的定义:“一个 Tensor
持有为 loss
计算的梯度。”如何从 compute_gradients
获得的一组梯度中生成这样的张量?
谢谢。
最佳答案
您可以使用 tf.convert_to_tensor
方法将梯度列表转换为 tensor
,然后使用 tf.reduce_sum
:
train_op = optimizer.minimize(loss_op, grad_loss=tf.reduce_sum(tf.convert_to_tensor(grad_loss)))
关于python - 使用 TensorFlow `` grad_loss/grad_ys`` 参数添加梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49155119/
在tf.gradients中,有一个关键字参数grad_ys grad_ys is a list of tensors of the same length as ys that holds the
我正在尝试使用 optimizer.minimize(loss, grad_loss=) 中的 grad_loss 参数来修改具有现有梯度的网络梯度。我关注了这里的评论: Use of grads_y
我是一名优秀的程序员,十分优秀!