问题标签 [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.
tensorflow - 使用 tensorflow 在 Eager 模式下的分布式执行
根据最近发布的白皮书和 GitHub 上的RFC,TensorFlow Eager 目前支持分布式执行。上面提到,类似于图形模式,我们可以通过将设备名称设置为例如“/job:training/task:2/device:GPU:0”来在远程设备上急切地运行操作。但是,我找不到有关如何执行此操作的任何代码示例或教程。
我确实注意到有很多关于tf.distribute的教程,这是一个用于分布式训练的高级 API,它同时支持图形和 Eager 模式。但是,我更感兴趣的是 tf.distribute 如何在 Eager模式下工作。具体来说,我想知道:
如何在 Eager 模式下将客户端连接到远程服务器?
在 Eager 模式下何时以及如何指定集群定义?
如果有人能提供这些问题的答案,我将不胜感激。谢谢!
python - 如何使用 batch_size=1 评估模型并将训练参数用于 BatchNorm 而不是 InstanceNorm?
当我运行我model(training=False)
的 with 时batch_size = 2
,模型使用 BatchNorm 的训练参数,但是当我运行 model with 时batch_size = 1
,我的模型不使用训练过的参数,InstanceNorm
实际上是这样做的。如何使用batch_size = 1
as运行模型batch_size = 2
?
tensorflow - 渴望执行获得可训练的变量
在我看到的关于 tfe 的所有教程(包括 tf 官方文档)中,该示例使用渐变磁带,并手动将所有渐变添加到计算渐变列表中,例如
但这是唯一的方法吗?即使对于大型模型,我们也需要累积所有参数,或者我们可以以某种方式访问默认图形变量列表
尝试访问tf.get_default_graph().get_collection(tf.GraphKeys.GLOBAL_VARIABLES)
或trainable_variables
在 tfe 会话中给出空列表。
python - TensorFlow 2.0:急切执行训练要么返回糟糕的结果,要么根本不学习
我正在试验 TensorFlow 2.0 (alpha)。我想实现一个简单的前馈网络,它有两个用于二进制分类的输出节点(它是这个模型的 2.0 版本)。
这是脚本的简化版本。在我定义了一个简单的Sequential()
模型之后,我设置了:
训练没有错误,但是奇怪的事情发生了:
- 有时,网络不会学到任何东西。所有损失和准确度分数在所有时期都是恒定的。
- 其他时候,网络正在学习,但非常非常糟糕。准确度从未超过 0.4(而在 TensorFlow 1.x 中,我毫不费力地获得了 0.95+)。如此低的表现表明我在训练中出了点问题。
- 其他时候,准确性会非常缓慢地提高,而损失始终保持不变。
什么会导致这些问题?请帮助我理解我的错误。
更新:经过一些更正后,我可以让网络学习。但是,它的性能极差。在 1000 个 epoch 之后,它达到了大约 %40 的准确率,这显然意味着仍然有问题。任何帮助表示赞赏。
tensorflow - 如何在 Tensorflow 急切模式下使用梯度带获得损失函数关于神经网络参数的二阶导数
我正在使用 TensorFlow Eager 模式为 MNIST 数据集创建一个基本的自动编码器。我想观察我的损失函数在训练时相对于网络参数的二阶偏导数。目前,调用返回的tape.gradient()
输出(嵌套在外部称为磁带的地方,我在下面包含了我的代码)in_tape.gradient
None
in_tape
GradientTape
GradientTape
我试过tape.gradient()
直接在in_tape.gradient()
没有返回的情况下调用。我的下一个方法是迭代输出in_tape.gradient()
并分别应用于tape.gradient()
每个梯度(相对于我的模型变量),None
每次都返回。
None
对于任何调用,我都会收到一个值tape.gradient()
,而不是我认为会指示None
单个偏导数的 None 值列表,这在某些情况下是可以预期的。
我目前只尝试获得第一组权重(从输入到隐藏层)的二阶导数,但是,一旦我完成这项工作,我将对其进行缩放以包含所有权重。
我的最终目标是针对我的网络的所有参数形成损失函数的 hessian 矩阵。
感谢您的任何帮助!
python - 有没有办法知道 `.repeat`/`.batch`/`.shuffle` 是否已在 tensorflow 数据集上使用?
获得一个已构建的 tensorflow 数据集对象 ( tf.data.Dataset
),名为data
.
有没有办法通过检查数据来知道函数repeat
//是否在这个对象上被调用batch
?(并可能获得其他信息,例如批处理和重复的参数)shuffle
(我假设急切执行)
编辑 1:似乎 str 方法带有一些信息。调查那个。
编辑 2:属性 output_shapes 提供有关批量大小和形状的信息。
python - 如何将急切执行中的模型转换为静态图并保存在 .pb 文件中?
想象一下我有模型(tf.keras.Model):
我对其进行了训练并使用以下方法保存了它:
这意味着我有两个保存的文件:epoch_10-2.index
和epoch_10-2.data-00000-of-00001
现在我想部署我的模型。我想获取 .pb 文件。我怎么才能得到它?我想我需要以图形模式打开我的模型,加载我的权重并将其保存在 pb.file 中。实际上怎么做呢?
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 时,我是否遗漏了什么?
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 是默认的,我想知道这是什么问题?!
python - 急切模式下的张量流梯度返回零
问题:我正在从保存的检查点加载一个简单的 VGG16。我想在推理过程中为图像生成显着性。当我计算为此所需的梯度(损失输入图像)时,我将所有梯度恢复为零。非常感谢我在这里缺少的任何想法!
tf版本: tensorflow-2.0alpha-gpu
该模型:
我训练这个模型并将其保存到一个检查点并通过以下方式加载它:
我验证重量是否正确加载。
获取测试图像
获取渐变:
当我检查我的渐变时,它们都为零!知道我错过了什么吗?提前致谢!