问题标签 [tensorflow-gradient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1483 浏览

python - Tensorflow:从输入到输出的梯度计算

我想计算神经网络输出相对于输入的梯度。我有以下张量:

对于从输入到整个输出向量的梯度,我可以使用以下内容:

因为我想计算每个时间样本的梯度,所以我想计算

对于每个i.

最好的方法是什么?

0 投票
1 回答
5591 浏览

python - 如何在 Tensorflow 训练期间打印梯度?

为了调试 Tensorflow 模型,我需要查看渐变是否发生了变化,或者其中是否有任何 nan。简单地在 Tensorflow 中打印一个变量是行不通的,因为你看到的是:

我尝试使用tf.Print类,但无法使其工作,我想知道它是否可以以这种方式实际使用。在我的模型中,我有一个训练循环,可以打印每个时期的损失值:

插入print(model.gradients[0][1])此函数将不起作用,因此我尝试在丢失打印后立即使用以下代码:

但我收到以下错误消息:

这是有道理的,因为tf.Print它确实不是图表的一部分。因此,我尝试tf.Print在实际图形中使用损失后计算,但效果不佳,我仍然得到Tensor("Train/Model/mul:0", shape=(8182, 100), dtype=float32).

如何在 Tensorflow 的训练循环中打印梯度变量

0 投票
1 回答
5237 浏览

python - 在张量流中更新张量

我在 tensorflow 中定义了一个无监督问题,我需要在每次迭代时更新我的​​ B 和我的 tfZ,但我不知道如何tfZ使用 tensorflow 会话来更新我的。

此代码打印以下内容:

张量对象正确地没有分配属性,但我找不到任何其他附加到对象的函数可以做到这一点。如何正确更新我的张量?

0 投票
0 回答
29 浏览

python - 除了使用 tf.registergradient 的渐变,我可以返回变量吗

我对 tf.registergradient 操作有疑问

我正在使用 @tf.registergradient 对 tensorflow 渐变进行自定义更改。注意:我不是只修改 backpopogated 渐变的增量部分。这工作正常。但是现在我想保存我正在修改的变量,包括修改之前和之后,这样我可以在完成训练后分析它们。但是我不确定如何做到这一点。这是代码片段

@tf.RegisterGradient("CustomModGrad")

def noise_delta(unused_op, delta):
noiz = tf.random_normal(shape=tf.shape(grad), stddev=sigma_value)
delta = tf.add(delta,noiz)
return delta

我想存储 noiz 和 delta 变量,以便以后分析它们。我该怎么做呢?谢谢你!

0 投票
1 回答
475 浏览

python - Tensorflow TypeError:获取参数 None 的类型无效在寻找梯度的同时

这是一个带有 CNN 模型的文本分析任务,我想可视化哪个词最能触发我的特定分类,这是我的代码

最后一部分我想通过使用嵌入层的梯度来获取原始输入,结果变成了 None 类型,我正在使用 Google word2vec 模型来嵌入前向传递。

I---->最后一行错误

我想可视化直到输入的最后一个 cnn 层,所以我想找出在输入之前反向传播了多少,哪个词贡献最大,

0 投票
1 回答
12189 浏览

tensorflow - Tensorflow - 没有为任何变量提供梯度

我正在 Jupyter 上试验一些代码并一直卡在这里。如果我删除以“optimizer = ...”开头的行以及对该行的所有引用,事情实际上工作得很好。但是,如果我将这一行放在代码中,则会出现错误。

我没有在此处粘贴所有其他函数以使代码的大小保持在可读水平。我希望更有经验的人可以立即看到这里有什么问题。

请注意,输入层、2 个隐藏层和输出层中有 5、4、3 和 2 个单元。

代码:

错误:

请注意,如果我运行

就在“优化器 = ...”行之前,我实际上在那里看到了我的可训练变量。

有人会知道可能是什么问题吗?

编辑和添加更多信息:如果您想看看我如何创建和初始化我的参数,这里是代码。也许这部分有什么问题,但我不明白是什么..

#

附录

我让它工作了。我没有写一个单独的答案,而是在这里添加我的代码的正确版本。

(大卫在下面的回答很有帮助。)

我只是删除了 my_sess 作为我的 compute_cost 函数的参数。(我以前无法让它工作,但似乎根本不需要它。)我还在我的主函数中重新排序了语句,以便以正确的顺序调用事物。

这是我的成本函数的工作版本以及我如何称呼它:

这是我调用 compute_cost(..) 函数的主要函数:

0 投票
2 回答
41 浏览

python - tensorflow:参数权重的变化与应基于梯度的变化不同

编辑:已解决——使用不同的梯度训练示例与优化器更新是愚蠢的。

好的,这让我完全难过。

我有一个参数向量,我们称之为w

w = [-1.34554319, 0.86998659, 0.52366061, 2.6723526, 0.18756115, 0.16547382]

compute_gradients用来计算w的渐变,它告诉我渐变是:

dw = [-0.0251517, 0.88050844, 0.80362262, 0.14870925, 0.10019595, 1.33597524]

我的学习率是0.1. 尔格:

w_new = w - 0.1 * dw

w_new = [-1.34302802, 0.78193575, 0.44329835, 2.65748168, 0.17754156, 0.0318763]

您可以自己检查数学,但应该检查一下。但是,如果我运行 tensorflow 代码并评估 的值w_new,我会得到:

w_new_tf = [-1.27643258, 0.9212401, 0.09922112, 2.55617223, 0.38039282, 0.15450044]

老实说,我不知道为什么要这样做。

编辑:让我为您提供确切的代码,向您展示它为什么不起作用。正如您将看到的,这可能是由于索引造成的。

这是样板启动代码。

这是自定义目标函数。

这是一些样板代码,用于实际最小化该功能。在两点上,我sess.run调用了tf.Variables 来查看值是如何变化的。

最后,这是一些实际获取渐变的代码。这些渐变是根据手工导出的渐变进行双重检查的,因此它们是正确的。对不起代码的丑陋,这是另一个 SO 答案的公然复制和粘贴:

0 投票
1 回答
662 浏览

python - 我可以在不应用输入的情况下获得张量相对于输入的梯度吗?

例如,我需要计算cross_entropy相对于的梯度x,但我需要对梯度函数应用另一个值。

那是:

我认为tf.gradients()函数只会在x = x. 那么 tensorflow 是否提供了这些功能?

0 投票
1 回答
7522 浏览

python - 如何使用张量板监控 keras 中的梯度消失和爆炸?

我想用 keras 监控 tensorboard 中的梯度变化,以确定梯度是消失还是爆炸。我应该怎么办?

0 投票
1 回答
2024 浏览

tensorflow - 张量流中的停止梯度

我想知道 tf.stop_gradient 是否仅停止给定操作的梯度计算,或者停止其输入 tf.variable 的更新?我有以下问题 - 在 MNIST 中的正向路径计算期间,我想对权重执行一组操作(比如说 W 到 W*),然后对输入进行 matmul。但是,我想从反向路径中排除这些操作。我只想在反向传播训练期间计算 dE/dW。我编写的代码阻止 W 更新。你能帮我理解为什么吗?如果这些是变量,我知道我应该将它们的可训练属性设置为 false,但这些是权重操作。如果 stop_gradient 不能用于此目的,那么如何构建两个图,一个用于正向路径,另一个用于反向传播?

我正在使用 tensorflow 梯度下降优化器进行训练。