问题标签 [eager-execution]

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 回答
235 浏览

python - 具有急切执行的 TensorFlow 多项式分布

我来自本教程,它基于来自我们的 RNN 的预测张量,在急切执行中使用多项分布来获得下一个字符的最终预测以生成文本。

我的问题是:

  1. 温度(这里是 0.5)不只是缩放所有预测,为什么它会影响多项式选择呢?

    [0.2, 0.4, 0.3, 0.1]/温度 = [0.4, 0.8, 0.6, 0.2]

    那么多项式不是对概率进行归一化吗?因此,在缩放时,我们只是增加每个字符的概率,限制为 1?

  2. [-1, 0].numpy() 有什么作用?我完全迷失了这个。

任何提示表示赞赏。

0 投票
1 回答
181 浏览

python - Eager 模式下的 TFP 精确 GP 回归

我正在尝试使用 TF2.0 急切模式执行精确的 GP 回归,基于来自 https://colab.research.google.com/github/tensorflow/probability/blob/master/tensorflow_probability/examples的基于原始图的示例/jupyter_notebooks/Gaussian_Process_Regression_In_TFP.ipynb

然而优化失败:

“tensorflow.python.framework.ops.EagerTensor”对象没有属性“_in_graph_mode”

如果我将幅度、length_scale 和 observation_noise_variance 分别移动到 tf.Variable,例如:

优化失败:

ValueError:没有为任何变量提供梯度:['amplitude:0', 'length_scale:0', 'observation_noise_variance:0']。

我究竟做错了什么?

0 投票
0 回答
213 浏览

python - 具有 Eager Execution 的 Tensorflow:DDPG - 将动作梯度应用于 Actor

我正在努力应用 Tensorflow 急切执行 (TF2) 来训练 actor-critic DDPG 算法的 actor 。此示例中的描述说明:

使用参与者的在线网络,使用当前状态作为输入来获取动作平均值。然后,使用评论家在线网络以获得评论家输出相对于动作平均值 ∇aQ(s,a) | 的梯度。s=s_t,a=μ(s_t)。使用链式法则,在给定 ∇aQ(s,a) 的情况下,计算参与者输出相对于参与者权重的梯度。最后,将这些梯度应用到演员网络。

Actor 和 Critic 都是 Keras 模型。很抱歉没有发布完整的代码,但我希望我的问题可以从这些相关的片段中理解。

在“predict_critic”中,评论家被提供状态和动作,所以“tape_online_critic”有操作

我尝试了几乎所有可以想到的变量/磁带等组合,但我总是使用[None]ValueError的梯度。

  1. 我不确定tape.gradient()函数的参数顺序,甚至不确定参数本身的性质。
  2. 据我了解,我必须在在线演员的磁带上调用tape.gradient()函数,以获得演员权重相对于 with tape: context 中 predict_actor 函数中记录的操作的梯度. 我是否还需要在那里进行tape.watch( someTensor )的操作?文档说变量会被自动监视,所以我假设不会。
  3. tf.GradientTape 是否适合在这里使用?还有tfe.gradients_function?
0 投票
1 回答
2290 浏览

python-3.x - AttributeError:“numpy.dtype”对象没有属性“is_floating”

我使用渴望执行来开发自己的操作。我遇到了一个错误。如何解决?

环境:协作 TF 版本:1.14

我用:

我试过tf.convert_to_tensor()了,但它导致了其他错误。由以下原因引起的错误:

错误信息:

0 投票
0 回答
541 浏览

python - Tensorflow Eager 模式:GPU 上的首次执行速度慢

下面的代码比较了 CPU 和 GPU 上的计算时间。仅在第一次执行时,我在 GPU 上的运行时间比 CPU 慢,在所有后续运行中,GPU 都快得多。为什么第一次在 GPU 上运行很慢?我如何使第一次在 GPU 上运行得更快?

第一次运行的输出:

后续运行的输出:

PS:这与看似相关的问题不同,因为tf.device("GPU:0")已经选择/device:GPU:0而不是/device:XLA_GPU:0

0 投票
1 回答
1595 浏览

python - tf.GradientTape() 位置对模型训练时间的影响

我正在尝试更新每个时期的权重,但我正在分批处理数据。问题是,为了规范化损失,我需要在训练循环之外记录 TensorFlow 变量(以进行跟踪和规范化)。但是当我这样做时,训练时间是巨大的。

我认为,它会将所有批次的变量累积到图中并在最后计算梯度。

我已经开始在 for 循环外和 for 循环内跟踪变量,后者比第一个更快。我对为什么会发生这种情况感到困惑,因为无论我做什么,我的模型的可训练变量和损失都保持不变。

当我在 for 循环内声明 tf.GradientTape() 时,它非常快,但我在外面它很慢。

PS - 这是一个自定义损失,架构只包含一个大小为 10 的隐藏层。

我想知道,tf.GradientTape() 的位置的不同之处以及它应该如何用于在批处理数据集中更新每个时期的权重。

0 投票
3 回答
13914 浏览

python - 急切执行函数的输入不能是 Keras 符号张量

我正在尝试在tf.Keras(TensorFlow 2.0.0rc0)中为具有稀疏注释数据(Cicek 2016,arxiv:1606.06650)的 3-D U-Net 实现与样本和像素相关的损失加权。

这是我的代码:

这在禁用 Eager Execution 时运行良好,但 TensorFlow 2 的要点之一是默认具有 Eager Execution。如您所见,在我和该目标之间的是自定义损失函数(使用损失函数也可以'mse'消除该错误):

我该怎么做才能使这种结构与急切的执行一起工作?

我的一个想法是连接w到输出y并分离y_pred到原始y_predw损失函数中,但这是我想避免的黑客攻击。但是,它可以工作,更改标记为# HERE

还有其他想法吗?

0 投票
1 回答
1521 浏览

tensorflow - TensorFlow:如何在 Eager Execution 中检查梯度和权重?

我在 Eager Execution 中使用 TensorFlow 1.12,我想在训练期间检查不同点的梯度值和权重以进行调试。这个答案使用 TensorBoard 来获得很好的权重和梯度分布图,这正是我想要的。但是,当我使用Keras 的 TensorBoard 回调时,我得到了这个:

换句话说,这与急切执行不兼容。有没有其他方法可以打印梯度和/或权重?大多数非 TensorBoard 的答案似乎都依赖于基于图形的执行。

0 投票
0 回答
134 浏览

python - Tensorflow - 急切和图形模式之间的性能问题

我遇到了一个问题,我需要你的帮助。我正在尝试对渴望和图形模式之间的执行时间进行基准测试。我正在使用一个非常简单的模型(只有一个密集层)。

这是图形版本:

这是急切的版本

我正在使用 tf 1.14,我面临的问题是(如果是一个)图形版本比渴望版本慢。以下是图表和急切版本的输出(分别):

我预计结果会被反转,所以我真的不明白为什么图形版本比渴望的版本慢。如果我在 Eager 版本中使用tf.function装饰器,差别就更大了。有人解释吗?

谢谢

0 投票
1 回答
424 浏览

python - 如何在 TensorFlow Eager 模式下使用复杂变量?

在非急切模式下,我可以毫无问题地运行它:

但我似乎无法在渴望模式下找到等效的表达式。我尝试了以下方法,但 TF 抱怨:

tf.float32调用 GradientTape.gradient 时,源张量的 dtype 必须是浮动的(例如),得到tf.complex64

没有为任何变量提供梯度:['tf.Tensor((1+1j), shape=(), dtype=complex64)']

如何在 Eager 模式下训练复杂变量?