问题标签 [gradienttape]

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 投票
3 回答
1124 浏览

python - 如何将 Tensorflow BatchNormalization 与 GradientTape 结合使用?

假设我们有一个使用 BatchNormalization 的简单 Keras 模型:

如何在 GradientTape 中实际使用它?以下似乎不起作用,因为它不更新移动平均线?

特别是,如果您检查移动平均线,它们保持不变(检查 model.variables,平均值始终为 0 和 1)。我知道可以使用 .fit() 和 .predict(),但我想使用 GradientTape,但我不知道该怎么做。某些版本的文档建议更新 update_ops,但这似乎在急切模式下不起作用。

特别是,经过上述训练后,以下代码将不会输出任何接近 150 的值。

0 投票
1 回答
127 浏览

tensorflow - Tensorflow 2.0 中的梯度计算

这是我在 Tensorflow 2.0 中的示例:

它返回:

以上是正确的系数,但grad_2也应该表明我们有 3w^2。我怎样才能找回w^2零件?

0 投票
2 回答
499 浏览

tensorflow - 使用 GradientTape 在 TensorFlow 2.0 线性回归示例中爆炸损失

我正在尝试为多元线性回归构建一个小的教育示例,但是 LOSS 一直在增加,直到它爆炸而不是变得更小,知道吗?

如果我使用“正确”值初始化权重(通过 scikit-learn 回归器发现),甚至会发生这种情况

0 投票
0 回答
251 浏览

python-3.x - Tensorflow gradientTape 在计算相同的梯度两次时给出不同的结果

我正在尝试使用 TF 2.0。我想记录我的神经网络的梯度和权重范数。为此,我使用以下代码。

这是训练循环:

问题: 运行脚本时,输出层的梯度范数得到相同的值,但双向层的范数(bi_lstm)得到不同的值

这是输出:

我在这里想念什么?

提前致谢

0 投票
1 回答
422 浏览

python - Tensorflow 2.0 Autograph 间接修改(隐藏状态)在不应该的情况下有效

因此,这里说间接修改不应该起作用,这意味着更改将是不可见的(无论如何,不​​可见的更改是什么意思?)

但是这段代码正确地计算了梯度:

我在这里错过了什么吗?

谢谢

0 投票
5 回答
5377 浏览

python - 在 TensorFlow 2.0 的自定义训练循环中应用回调

我正在使用 Tensorflow DCGAN 实施指南中提供的代码编写自定义训练循环。我想在训练循环中添加回调。在 Keras 中,我知道我们将它们作为参数传递给“fit”方法,但找不到有关如何在自定义训练循环中使用这些回调的资源。我正在从 Tensorflow 文档中添加自定义训练循环的代码:

0 投票
1 回答
169 浏览

python - 在 Tensorflow 2.0 中使用 GradientTape() 和 jacobian() 时出错

我在 Python 的 Tensorflow 2.0 中使用 GradientTape() 和 jacobian()。

此代码执行良好:

但是这段代码中断了:

并抛出错误:

InvalidArgumentError:您必须使用 dtype int32 [[node loop_body/Placeholder(定义在 ...Anaconda3\lib\site-packages\tensorflow_core\python\framework\ops.py:1751)为占位符张量“loop_body/Placeholder”提供一个值]] [操作:__inference_f_995]

Traceback(最近一次调用最后一次)模块
4 中的 ipython-input-32-686c8a0d6e95 gv = tf.Variable([x, 0.0], dtype=tf.float32)
5 g = tf.convert_to_tensor(gv , dtype=tf.float32)
----> 6 dg = gT.jacobian(g, x)

为什么第一个代码有效,而第二个代码无效?

0 投票
1 回答
689 浏览

tensorflow - 为什么当我使用 numpy 数学时 GradientTape 返回 None

为什么当我使用 numpy 数学时 GradientTape 返回 None

我正在尝试了解 RL 损失函数的 tensorflow GradientTape 计算。当我使用 np.math 调用函数时,GradientTape 返回 None。如果我在函数中使用 tf.math 它工作正常。我看过像 ppo 和 sac 这样的 tf-agents,他们正在做(?)我正在尝试做的事情(我已经尝试了最后 50 个其他版本)。下面的代码有什么问题?我错过了什么?

窗口 10,python 3.6.8,tensorflow 2.0.0 参考:https ://github.com/chagmgang/tf2.0_reinforcement_learning/blob/master/policy/ppo.py

0 投票
0 回答
493 浏览

python - Tensorflow 2梯度胶带没有按预期工作

我目前正在Tensorflow 2中训练一个大型对象检测模型,并使用梯度磁带自定义训练循环。问题是模型没有改善损失,因为梯度非常低。我使用 cifar10 在一个简单的分类任务中重现了这个问题,发现一个小模型训练得很好,没有问题,而一个更大的模型(VGG16)根本没有改善损失。下面是一些重现问题的代码。

VGG16型号:

小型CNN模型:

训练循环:

如果您运行显示的代码,您将看到在使用小型 CNN 模型时网络训练良好。但另一方面,它不适用于使用标准 VGG16 模型进行相同预处理的完全相同的数据集。更令人困惑的是,VGG 模型在使用model.fit而不是使用梯度磁带的自定义训练循环时将训练得非常好。

有谁知道为什么会这样以及如何解决这个问题?

0 投票
2 回答
910 浏览

tensorflow2.0 - 如何在tenworflow2中使用tf.gradienttape保存和加载模型

我正在使用 tf.gradienttape 进行模型训练,并且成功地为每个 epoch 保存检查点。

以下两个问题,1.如何保存这个模型?2. 我以后如何加载这个模型?

我的模型是一种自动编码器类型的模型,因此有必要创建重建模型来比较和查看错误。