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

tensorflow - 使用 tensorflow 在 Eager 模式下的分布式执行

根据最近发布的白皮书和 GitHub 上的RFC,TensorFlow Eager 目前支持分布式执行。上面提到,类似于图形模式,我们可以通过将设备名称设置为例如“/job:training/task:2/device:GPU:0”来在远程设备上急切地运行操作。但是,我找不到有关如何执行此操作的任何代码示例或教程。

我确实注意到有很多关于tf.distribute的教程,这是一个用于分布式训练的高级 API,它同时支持图形和 Eager 模式。但是,我更感兴趣的是 tf.distribute 如何在 Eager模式下工作。具体来说,我想知道:

  1. 如何在 Eager 模式下将客户端连接到远程服务器?

  2. 在 Eager 模式下何时以及如何指定集群定义?

如果有人能提供这些问题的答案,我将不胜感激。谢谢!

0 投票
0 回答
73 浏览

python - 如何使用 batch_size=1 评估模型并将训练参数用于 BatchNorm 而不是 InstanceNorm?

当我运行我model(training=False)的 with 时batch_size = 2,模型使用 BatchNorm 的训练参数,但是当我运行 model with 时batch_size = 1,我的模型不使用训练过的参数,InstanceNorm实际上是这样做的。如何使用batch_size = 1as运行模型batch_size = 2

0 投票
1 回答
1234 浏览

tensorflow - 渴望执行获得可训练的变量

在我看到的关于 tfe 的所有教程(包括 tf 官方文档)中,该示例使用渐变磁带,并手动将所有渐变添加到计算渐变列表中,例如

但这是唯一的方法吗?即使对于大型模型,我们也需要累积所有参数,或者我们可以以某种方式访问​​默认图形变量列表
尝试访问tf.get_default_graph().get_collection(tf.GraphKeys.GLOBAL_VARIABLES)trainable_variables在 tfe 会话中给出空列表。

0 投票
1 回答
1013 浏览

python - TensorFlow 2.0:急切执行训练要么返回糟糕的结果,要么根本不学习

我正在试验 TensorFlow 2.0 (alpha)。我想实现一个简单的前馈网络,它有两个用于二进制分类的输出节点(它是这个模型的 2.0 版本)。

这是脚本的简化版本。在我定义了一个简单的Sequential()模型之后,我设置了:

训练没有错误,但是奇怪的事情发生了:

  • 有时,网络不会学到任何东西。所有损失和准确度分数在所有时期都是恒定的。
  • 其他时候,网络正在学习,但非常非常糟糕。准确度从未超过 0.4(而在 TensorFlow 1.x 中,我毫不费力地获得了 0.95+)。如此低的表现表明我在训练中出了点问题。
  • 其他时候,准确性会非常缓慢地提高,而损失始终保持不变。

什么会导致这些问题?请帮助我理解我的错误。


更新:经过一些更正后,我可以让网络学习。但是,它的性能极差。在 1000 个 epoch 之后,它达到了大约 %40 的准确率,这显然意味着仍然有问题。任何帮助表示赞赏。

0 投票
0 回答
578 浏览

tensorflow - 如何在 Tensorflow 急切模式下使用梯度带获得损失函数关于神经网络参数的二阶导数

我正在使用 TensorFlow Eager 模式为 MNIST 数据集创建一个基本的自动编码器。我想观察我的损失函数在训练时相对于网络参数的二阶偏导数。目前,调用返回的tape.gradient()输出(嵌套在外部称为磁带的地方,我在下面包含了我的代码)in_tape.gradientNonein_tapeGradientTapeGradientTape

我试过tape.gradient()直接在in_tape.gradient()没有返回的情况下调用。我的下一个方法是迭代输出in_tape.gradient()并分别应用于tape.gradient()每个梯度(相对于我的模型变量),None每次都返回。

None对于任何调用,我都会收到一个值tape.gradient(),而不是我认为会指示None单个偏导数的 None 值列表,这在某些情况下是可以预期的。

我目前只尝试获得第一组权重(从输入到隐藏层)的二阶导数,但是,一旦我完成这项工作,我将对其进行缩放以包含所有权重。

我的最终目标是针对我的网络的所有参数形成损失函数的 hessian 矩阵。

感谢您的任何帮助!

0 投票
1 回答
137 浏览

python - 有没有办法知道 `.repeat`/`.batch`/`.shuffle` 是否已在 tensorflow 数据集上使用?

获得一个已构建的 tensorflow 数据集对象 ( tf.data.Dataset),名为data.

有没有办法通过检查数据来知道函数repeat//是否在这个对象上被调用batch?(并可能获得其他信息,例如批处理和重复的参数)shuffle

(我假设急切执行)

编辑 1:似乎 str 方法带有一些信息。调查那个。

编辑 2:属性 output_shapes 提供有关批量大小和形状的信息。

0 投票
2 回答
2008 浏览

python - 如何将急切执行中的模型转换为静态图并保存在 .pb 文件中?

想象一下我有模型(tf.keras.Model):

我对其进行了训练并使用以下方法保存了它:

这意味着我有两个保存的文件:epoch_10-2.indexepoch_10-2.data-00000-of-00001

现在我想部署我的模型。我想获取 .pb 文件。我怎么才能得到它?我想我需要以图形模式打开我的模型,加载我的权重并将其保存在 pb.file 中。实际上怎么做呢?

0 投票
0 回答
321 浏览

tensorflow - 使用 tf.keras.Model 作为定义 RNN Cell 的基类

我在 TensorFlow 的 EagerExecution 中工作,以在顺序数据设置中开发变分自动编码器 (VAE) 的变体。由于循环网络结构及其输入输出流程都不是标准的,因此我必须构建自己的自定义 RNNCell,稍后可以将其传递给 tf.nn.raw_rnn API。

关于构建所需 RNNCell 的类,我使用 tf.keras.Model 作为基类。但是,当我将这个 RNNCell 传递给 tf.nn.raw_rnn 时,我得到了 nan 输出。怎么了?

这是我的实现(如果您仍然不清楚,请告诉我)

数据集称为“输入”,所有有界条目均为 float32 dtype 和形状(time_steps、batch_size、input_depth)=(20、1000、4)。注意 shape 格式与使用更熟悉的 tf.nn.dynamic_rnn API 时的区别(使用后者 API 时,shape 的格式为 (batch_size, time_steps, input_depth))。

在这里,输出是纳米...

因此我无法进行训练步骤。怎么了?在上面使用 tf.keras.Model 作为基类定义 RNNCell 时,我是否遗漏了什么?

0 投票
1 回答
307 浏览

python - 如何在急切执行中使用 tf.while_loop?

在文档中, tf.while_loop 的主体需要是 python 可调用的。

有效,但

抛出 ValueError: Attempt to convert a value (None) with an unsupported type() to a Tensor

在 2.0 中,eager execution 是默认的,我想知道这是什么问题?!

0 投票
2 回答
2128 浏览

python - 急切模式下的张量流梯度返回零

问题:我正在从保存的检查点加载一个简单的 VGG16。我想在推理过程中为图像生成显着性。当我计算为此所需的梯度(损失输入图像)时,我将所有梯度恢复为零。非常感谢我在这里缺少的任何想法!

tf版本: tensorflow-2.0alpha-gpu

该模型:

我训练这个模型并将其保存到一个检查点并通过以下方式加载它:

我验证重量是否正确加载。

获取测试图像

获取渐变:

当我检查我的渐变时,它们都为零!知道我错过了什么吗?提前致谢!