问题标签 [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 投票
1 回答
136 浏览

python - Tensorflow 中自定义训练循环中的 If-Else 语句

我创建了一个模型类,它是 keras.Model 的子类。在训练模型时,我想在一些时期后改变损失函数的权重。为了做到这一点,我为我的模型创建了布尔变量,表明模型应该使用额外的损失函数开始训练。我添加了一个伪代码,主要显示了我想要实现的目标。

我的问题是:

  • 使用值在一段时间后发生变化的 if-else 语句是否有效?如果不是,怎么能做到这一点?
0 投票
0 回答
34 浏览

python - 如何使用 tf.GradientTape 训练分支神经网络?

我正在尝试使用 Keras 和 TF2 训练一个分支模型,其结构类似于此图像模型架构

基本上,我有一个图像数据集,它将通过一个编码器传递给我一个潜在向量作为结果。根据特定条件,开关会将此潜在向量传递给 4 个 DNN 之一。它们都产生自己的输出和损失,总损失是它们的总和。

所以,我的问题是,我应该如何使用 tf.GradientTape() 来跟踪梯度并更新模型可训练变量,因为小批量中的数据不会以一种方式流动?

Obs:我已经想出了一种在前进步骤中将潜在向量传递给正确 DNN 的方法。

0 投票
0 回答
40 浏览

python - 得到“ValueError:磁带仍在录制,如果您在计算梯度磁带内的雅可比时尝试重新输入已经激活的磁带,可能会发生这种情况”

我的损失函数需要计算雅可比矩阵行列式的对数。所以,我写了下面的代码

这给了我以下错误

0 投票
1 回答
47 浏览

python - 使用 GradientTape 训练一个基本的 TensorFlow 模型

仅出于教育目的,我试图在 TensorFlow 主页上的Basic training loops教程的基础上创建一个简单的神经网络,用于对平面中的点进行分类。

所以,我有一些点[0,1]x[0,1]存储在xshape张量中(250, 2, 1),相应的标签(1. or 0.)存储在yshape张量中(250,1,1)。然后我做

我得到的是一个预期形状的张量列表,但只包含零。有人给点建议吗?

0 投票
0 回答
30 浏览

python - 使用 tensorlfow 进行深度学习:GradientTape 实现中的问题

以下代码是对我的训练 cicle 的 3 个不同测试,在前两种情况下,梯度返回 Null 向量,在最后一种情况下有效。

这是我第一次尝试,根据网上的信息,with语句记录了其中的可训练变量。

但是由于某些原因它不起作用,所以我尝试(随机)将 with 语句放在前面,但它也不起作用

最后,包括 with 语句中的平均值,它终于起作用了

主要问题是我不知道它是好用还是正常工作..所以我需要更详细地了解 gradientTape 是如何工作的。你能帮助我吗?

0 投票
0 回答
79 浏览

tensorflow - 使用 Tensorflow 构建 GRUcell 获取隐藏状态

我想构建一个带有一个隐藏层的 GRU 单元,但我想在每个时间步获取隐藏状态。我想训练 GRU 单元 10 次,并且在每一步都获得隐藏状态。所以我尝试使用 Tensorflow 的 GRUcell。

Target_tensor 是一个带有目标变量的张量。假设我还定义了损失函数,即代码中的 squareLoss。hiddenStateSize 是隐藏单元的数量。

问题:

  1. 使用 gru 和 out 是否正确?
  2. 我是否正确执行 GradientTape?因为损失函数的值随着迭代的进行而变得越来越大。
0 投票
0 回答
70 浏览

python - tensorflow 2,梯度是一个空列表

我正在重新组织我的代码以便于阅读,但是在编译时它说: ValueError: No gradients provided for any variable: ['enc_conv_4/kernel:0'.... 我知道我的损失函数是可微的,因为代码在触摸它之前就已经工作了,但是现在我的模型的梯度丢失了。

正如你所看到的,当我对鉴别器和生成器做同样的事情时,生成器给了我一个空的梯度列表。

最后一段代码的最后一行给了我一个错误。我不知道这个错误是否是由于任何语义错误。

0 投票
1 回答
237 浏览

tensorflow - 权重未使用 Gradient Tape 和 apply_gradients() 更新

我正在构建一个具有自定义损失函数的 DNN,并且我正在使用 TensorFlow.keras 中的 Gradient Tape 训练这个 DNN enter code here。代码运行没有任何错误,但是,就我可以检查 DNN 的权重而言,权重根本没有更新。我完全按照 TensorFlow 网站上的建议搜索了答案,但仍然不明白是什么原因。这是我的代码:

我已经检查了模型的权重,model.get_weights()它们在运行循环之前和之后看起来完全一样。那么这里的问题是什么?还有一个问题,我怎样才能打印出每个时期的损失?

0 投票
0 回答
210 浏览

python - TF2.5:张量流:当最小化损失时,变量不存在梯度。(渐变胶带,keras)

我正在努力建立一个深度生存模型,并从一个简单的比例风险模型开始,使用 keras 和非 keras tensorflow 的混合。我的问题是GradientTape似乎没有跟踪我使用定义的参数tf.Variable,只有 Keras 中的参数。

这是我的模型:

看起来像这样:

定义一些虚拟数据:

前传:

看看可训练的变量:

损失似乎是有序的:

计算梯度:

这就是问题所在。 没有渐变Variable:0。是什么赋予了?当我去应用渐变时,我会收到警告、问题和NaNs

如果我运行训练循环超过几个步骤,conv 层上的梯度开始为NaN.

是什么赋予了?


编辑:我设法通过从方法中取出一堆东西makemodel并将其放入__call__. 我不知道为什么会这样。也许它会帮助一些未来的谷歌人?我很乐意给任何能解释为什么这样有效的人打 15 分,因为我不知道。

0 投票
0 回答
63 浏览

tensorflow - 使用 tf.gradienttape, loss = mse or huber or cross-entropy, y_true=constant, y_pred=my_network

1.演员评论模型

使用 tf.gradienttape,

y_true=constant,
y_pred=my_network_output, 例如y_pred = my_netword(input)

例如loss_actor = tf.losses.MSE(y_true, y_pred)
或其他类似的东西,比如

意图, y_true = constant, 是我的网络收敛到的

2.问题
归根结底,我把我的问题浓缩成下面
y_true,我用的是人工数据(假数据)

其中,n 从 124 开始,n 最终进入 inf

在这里,self.ret 是我的 y_true,我的标签

我想要,当我喂 self.ret 时y_true, = 0.1,我的网络输出 [0.0, 1.0] 代表投资

当我喂 self.ret 时y_true, = (- 0.1),我的网络输出 [1.0, 0.0] 代表 Uninvest

3. 将网络数据作为随机输入

  • 当我将网络输入作为随机数据提供时,此模型运行良好
  • 当 n < 130 时,my_network 输出 [0.0, 1.0],代表投资
  • 当 n > 130 时,my_network 输出 [1.0, 0.0],代表 uninvest

但是当我将网络输入作为真实的股票数据提供时,这个模型就出错了

  • 当 n > 130 时,my_network 输出 [0.0, 1.0],永远,代表投资,但我想要 [1.0, 0.0],即取消投资

4. tf.gradienttape 的错误使用

我知道,问题在于我以错误的方式使用 tf.gradienttape
tf.gradienttape 没有正确计算梯度

但是,确切地说,我想知道如何将我的代码更改为正确的

我的代码是: