AHG*_*AHG 5 python python-3.x tensorflow tensorflow-serving tensorflow2.0
我想tf.errors.InvalidArgumentError根据图形模式(在 TensorFlow 服务中)中的输入张量的值引发异常。
目前我正在使用tf.debugging.assert_all_finite并且效果很好。由于我不是对错误检查做出断言,而是根据输入引发异常,因此最好引发显式异常。
我的问题归结为:
这样做的正确方法是什么?
编辑:更多细节。我想在不使用 tf.debugging 的情况下重新创建以下逻辑(除非这实际上是正确的方法)。
目前我正在检查是否存在NaN这样的值:
assert_op = tf.debugging.assert_all_finite(
input_data,
'Cant have nans at beginning or end'
)
Run Code Online (Sandbox Code Playgroud)
正如您通过邮件写信给我的那样,这可能与有关在图形执行中捕获异常的 TF 问题以及相关的 SO 问题有关。但是,我不确定这是否真的与您相关。这个 TF 问题和 SO 问题是关于如何动态捕获异常,所以基本上try: ... except: ...在 TF 图中实现。
引入控制结构的其他 TF 功能包括:
tf.while_looptf.condtf.cond是您如何有条件执行代码的问题的答案。取决于条件,即bool标量。但也许这并不是你真正的问题,而是如何制定条件?
有tf.check_numerics一个检查张量是否有 inf/nan 的函数,如果找到这样的张量则抛出异常。
如果您想将其作为条件,可以使用以下代码:
is_finite = tf.reduce_all(tf.is_finite(x))
Run Code Online (Sandbox Code Playgroud)
如果你想在某些条件不成立时抛出异常,你可以这样做:
check_op = tf.Assert(is_finite, ["Tensor had inf or nan values:", x])
Run Code Online (Sandbox Code Playgroud)
您可能想使用它tf.control_dependencies来确保此操作check_op得到执行。
| 归档时间: |
|
| 查看次数: |
3121 次 |
| 最近记录: |