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

out-of-memory - 使用 tf.GradientTape 进行全批梯度下降:OOM 错误

我想使用 resnet 在数据集上实现“全批”梯度下降算法。但是,由于在全批次梯度中,每次迭代都需要计算所有训练点的梯度,所以当我使用 tf.GradinetTape 时,它​​会引发 OOM 错误。这是一个计算梯度的函数:

但是,由于网络非常大,我遇到了 OOM 错误。如何有效地计算全批次梯度下降的梯度?

0 投票
1 回答
230 浏览

tensorflow - GradientTape 不计算梯度

我知道,只要我在tf.GradientTape()上下文中定义计算,梯度磁带就会计算计算输出所依赖的所有变量的梯度。但是,我认为我并没有完全掌握渐变的细微之处,因为以下代码没有像我期望的那样执行:

为什么不计算梯度 wrt x?

我只能计算与上下文中明确使用的变量相关的梯度。例如,以下代码也不计算梯度:

0 投票
0 回答
325 浏览

tensorflow - Tensorflow tf.GradientTape().gradient 返回无

我设计了一个函数来计算损失和model.trainable_variables使用 Tensorflow的梯度GardientTape。我使用这个函数来执行拆分学习,这意味着模型在客户端上被划分和训练到特定层。客户端模型的输出、标签和可训练变量被发送到服务器以完成模型后半部分的训练。在服务器上,应在服务器上使用此函数计算应发送回客户端以更新客户端模型的服务器端梯度和客户端梯度:

服务器端梯度计算正确。损失也被正确计算并且服务器的 trainable_variables 被正确接收,但客户端梯度gradient_client = tape.gradient(l, trainable_variables_client)只返回:

msg 是一个包含数据的字典,从客户端发送到服务器:

0 投票
1 回答
91 浏览

python - Tensorflow:初始化连接张量的正确方法?

这是我面临的问题的MWE:

好吧,显然这在这种特殊情况下很容易解决,但在我面临的实际用例中,与循环神经网络有关,我需要使用tf.Variable连接其他张量来形成张量,如下所示:

好吧,我对在 TF 中实际操作张量还很陌生,也许有一种正确的方法可以从串联中创建张量。

帮助?

0 投票
1 回答
267 浏览

tensorflow - 为什么在 Tensorflow 中将 batch_size 乘以 GradientTape 结果?

我正在尝试将损失函数的梯度转换为另一个张量。但是梯度正乘以我输入模型的输入批量大小。

从代码中可以看出loss = returns - values。应该是这样d_loss/d_values = -1.0,但我得到的结果是d_loss/d_values = -1.0 * batch_size。有人请指出为什么会这样?我怎样才能得到真正的结果?

colab 链接:https ://colab.research.google.com/drive/1x4pyGJ5ccRVSMzDAeLzcPXRtO7cNFnJf?usp=sharing

0 投票
1 回答
178 浏览

python - tf.GradientTape() 不适用于切片输出

这是我尝试运行的一段代码:

这是输出:

如您所见, tf.GradientTape() 不适用于切片输出。有没有办法解决这个问题?

0 投票
1 回答
332 浏览

python - 使用 GradientTape 时,Tensorflow 渐变总是给出 None

我一直在玩耍并尝试在 TensorFlow 中实现我自己的损失函数,但我总是得到None渐变。为了重现这个问题,我现在将我的程序简化为一个最小的例子。我定义了一个非常简单的模型:

然后定义一个非常简单(但可能没用)的损失函数:

t.gradient(current_loss, model.trainable_weights)只给我一个None值列表,即[None, None, None, None]. 为什么会这样?我究竟做错了什么?我对 TensorFlow 的工作原理可能有误解吗?

0 投票
1 回答
720 浏览

tensorflow2.0 - 张量板直方图上未显示张量流 v2 梯度

我有一个简单的神经网络,我试图通过使用如下回调来使用 tensorboard 绘制梯度:

然后,我在 fit 期间使用回调:

现在,当我检查张量板时,我可以看到左侧过滤器上的渐变,但直方图选项卡中没有显示任何内容:

直方图张量板梯度

我在这里想念什么?我是否正确记录梯度?

0 投票
1 回答
1316 浏览

tensorflow - TF2 - GradientTape 与 Model.fit() - 为什么 GradientTape 不起作用?

晚上好,

我想用 tf2 和 Gradient Tape 函数实现一个简单回归问题的玩具示例。使用 Model.fit 它可以正确学习,但使用 GradientTape 可以做一些事情,但与 model.fit() 相比,损失并没有移动。这是我的示例代码和结果。我找不到问题。

这里是带有 model.fit() 的常规情况

准确度应该大致相同,但看起来它根本没有学习。输入 X 是张量,也是 y_true。

编辑测试

0 投票
1 回答
102 浏览

python - 为什么梯度在以下函数中没有连接?

我正在实施必须计算梯度的客户操作。下面是函数:

我无法计算关于盒子的梯度,tape.gradient() 返回无,这是我为计算梯度而编写的代码

我无法找到未连接渐变的原因。结果变量是导致它的原因吗?请提出替代实施方案。