问题标签 [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.
tensorflow2.0 - 创建 SparseCategoricalAccuracy 的修改版本,得到 ValueError: tf.function-decorated function tried to create variables on non-first call
我正在尝试SparseCategoricalAccuracy
在 tf 2.0 中创建一个可以通过compile(metrics=[masked_accuracy_fn()]
.
该函数如下所示:
这适用于 Eager 模式。但是,在图形模式下运行时,出现错误:
tensorflow2.0 - 为什么 trainable_variables 在训练后不改变?
我浏览了 一个 tf2.0 的基本示例
包含非常简单的代码
我通过以下方式对其进行了训练并在前后保存了 trainable_variables
他们是一样的!!!那么我检查的地方不正确吗?如果是这种情况,我怎样才能正确观察这些更新的变量?
tensorflow - 关闭 tensorflow 签名
我正在使用tf.data.Dataset.map(process_fn)
指令,映射函数由纯粹的 tensorflow 图函数组成,但 Autograph 似乎仍在尝试对其进行转换。我该如何预防?
如何强制 tensorflow 按原样使用我的代码(定义图形)?
出于某种原因,tensorflow 想要转换这个函数并报告一个警告它是不可能的,它将被原样使用。问题是,为什么首先尝试使用 Autograph?
python - 使用 Tensorflow 的 tf.io.gfile.exists 检查文件路径是否存在
在我的 Tensorflow 管道中,我定义了一个load()
函数,用于验证给定路径下是否存在特定图像文件。它看起来有点像这样:
这对自己的作品没有问题。当我稍后在设置数据集时包装此函数时会出现错误:
问题似乎是image_file
EagerMode 中的评估tf.io.gfile.exists
需要一个字符串作为输入,而不是字符串类型的张量。
我已经尝试使用image_file.numpy()
结果返回字符串值AttributeError: 'Tensor' object has no attribute 'numpy'
。
我还尝试按照这个密切相关的问题tf.py_function()
中的建议将我的函数包装在 a中,这在执行过程中会产生完全相同的结果。使用而不是拍摄当然也会出现同样的错误。TypeError
os.path.exists
tf.io.gfile.exists
任何有关解决此问题的解决方法或正确方法的建议将不胜感激!
python - 为什么启用 Eager Execution 时可训练变量会消失?
如果我运行以下代码(tensorflow 1.15),我可以通过两种不同的方式获得可训练变量的列表。
两者v1
和v2
具有相同的价值。
tf.compat.v1.enable_eager_execution()
如果我在创建模型之前添加调用,v2
则变为空;tf.compat.v1.trainable_variables()
返回一个空列表。
为什么是这样?
tensorflow - 如何在不急切执行的情况下将单词映射到 TF 2.0 中的词汇索引
我有一个 Keras 模型,可以在 Eager 模式开启时进行训练(TF 2.1.0)。我的一个特性是一个字符串,我需要将它映射到其相应的词汇索引。但是,在禁用急切执行的情况下,我找不到一种巧妙的方法来做到这一点。
我最初使用的是tft.apply_vocabulary
,它曾经可以正常工作,但没有急切的执行就失败了。我也试过tf.lookup.StaticVocabularyTable
:
其中(急切模式关闭)失败:
tensorflow.python.framework.errors_impl.FailedPreconditionError:表未初始化。[[{{节点转换器/hash_table_Lookup_1/hash_table_Lookup/LookupTableFindV2}}]]
我可以_initialize
在 a 中运行表的方法tf.Session
,但是对于这样一个常见的任务来说,这感觉工作量太大,而且不兼容 TF2.0。
那么,如何在不急切执行的情况下将字符串映射到词汇文件中的整数索引?
为什么不热心?
我的印象是图形模式训练有更广泛的支持(例如多 GPU 训练)和更好的性能,我正在努力确保我的代码在禁用急切模式的情况下工作,这样我最终可以在完成后关闭它发展。这是一个明智的目标吗?
python - 如何在训练运行之间的中间层内更新每个时期的参数?(张量流急切执行)
我有一个顺序 keras 模型,并且我有一个类似于以下示例的自定义层,名为“CounterLayer”。我正在使用 tensorflow 2.0(渴望执行)
当我运行这个例如 epoch=5 或其他东西时,self.count
每次运行的值都不会更新。它始终保持不变。我从这里的https://stackoverflow.com/a/41710515/10645817得到了这个例子。我需要一些几乎与此类似的东西,但我想知道这在热切执行 tensorflow 时是否有效,或者我必须做什么才能获得预期的输出。
我一直在尝试实现这一点,但无法弄清楚。有人可以帮我吗。谢谢...
python - 使用 python 的多处理并行化 keras 中的模型预测
我正在尝试使用 keras 在 python2 中提供的 model.predict 命令并行执行模型预测。我将 tensorflow 1.14.0 用于 python2。我有 5 个模型 (.h5) 文件,并希望 predict 命令并行运行。这是在 python 2.7 中运行的。我正在使用多处理池将模型文件名映射到多个进程上的预测函数,如下所示,
输入是从代码的另一部分获得的图像 numpy 数组。但是在执行此操作时,我得到以下信息,
我无法解释此错误消息,我该如何解决这个问题?非常感谢任何建议!
更新 2: 感谢所有指针和完整示例@sokato。我执行了@sokato 发布的确切代码,但是我得到了以下错误(我也对我的代码进行了更改并得到了下面显示的相同错误),
UPDATE3:
感谢所有支持。我认为UPDATE2中的问题是由于使用了python2 而不是python3。我能够通过使用而不是仅在@sokato 的代码中解决UPDATE2 for python2中给出的错误。导入关闭函数如下:with closing(multiprocessing.Pool()) as p:
with multiprocessing.Pool() as p:
from contextlib import closing
使用不同方法的新问题如下所示,
我实际上有多个输入。我不想每次为每个输入加载模型,而是想预先加载所有模型并将其保存在列表中。我已经这样做了,如下所示,
new_all_t 是一个包含元组的列表,每个元组都有来自 all_t 的输入和包含将在预测函数中提取的加载模型的列表。但是,我现在收到以下错误,
这究竟说明了什么?我该如何解决这个问题?
UPDATE4:
我在一开始就包括了这些tf.compat.v1.enable_eager_execution()
行
tf.compat.v1.enable_v2_behavior()
。现在我收到以下错误,
我无法解释此错误消息,我该如何解决这个问题?非常感谢任何建议!
python-3.x - 遇到以下问题:Eager Mode 不支持 build_tensor_flow
我正在玩 TensorFlow,我正在尝试将 Keras 模型导出为 TensorFlow 模型。我遇到了上述错误。我正在关注 Lynda 的“使用 Keras 2.0 构建深度学习应用程序”(https://www.linkedin.com/learning/building-deep-learning-applications-with-keras-2-0/exporting-google-cloud-兼容型号?u=42751868)
在尝试构建张量流模型时,我遇到了这个错误,在第 66 行抛出了添加元图和变量函数的定义。
第 66 行,在 build_tensor_info raise RuntimeError("build_tensor_info is not supported in Eager mode.") RuntimeError: build_tensor_info is not supported in Eager mode.
大家有什么想法吗?
tensorflow - Tensorflow 在 Eager Execution 模式下循环切片分配给变量
对于一些自定义代码,我需要运行一个 for 循环来在 Tensorflow 2 中动态创建一个变量(启用急切执行模式)。(在我的自定义代码中,我写入变量的值需要渐变,因此我想跟踪 for 循环中的计算,以便从 autodiff 中获取渐变)。我的代码有效,但速度非常慢。事实上,它比在 numpy 中执行相同的操作要慢几个数量级。
我已经隔离了这个问题,并提供了一个突出问题的玩具代码片段。修复它将允许我修复我的自定义代码。
此代码片段的关键要点是,在 for 循环中,我只需要更新变量的一部分。每次迭代时要更新的切片都不同。用于更新的数据在每次迭代中都不同(在我的自定义代码中,它是依赖于变量切片的一些简单计算的结果,这里我只是使用固定数组来隔离问题。)
我正在使用 Tensorflow 2,并且 TensorFlow 代码理想情况下需要在启用急切执行的情况下运行,因为部分自定义操作依赖于急切执行。
我是 Tensorflow 的新手,我非常感谢解决这个问题的任何帮助。
非常感谢,马克斯