Ste*_*t_R 5 tensorflow tensorflow-datasets
使用数据集map操作时,是否可以指定map调用导致错误的任何“行”被悄悄过滤掉,而不是让错误冒泡并终止整个会话?
我有一个输入管道设置(或多或少)执行以下操作:
tf.image.crop_to_bounding_box我的问题是,在(非常罕见的)情况下,我建议的边界框超出了给定图像的边界,因此(可以理解)tf.image.crop_to_bounding_box抛出如下错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: assertion failed: [width must be >= target + offset.]
Run Code Online (Sandbox Code Playgroud)
这会杀死会话。
如果这些错误被简单地忽略并且管道移动到下一个组合,我更喜欢它。
(我知道针对这个特定问题的正确解决方法是花时间检查每个边界框和图像尺寸大小是否可能在之前的步骤中进行,并filter在进行map裁剪操作之前使用操作将它们过滤掉。我想知道如果有一种简单的方法可以忽略错误并转到下一个案例,以便在这种特定情况下和更一般的情况下易于实现)
对于张量流 2
dataset = dataset.apply(tf.data.experimental.ignore_errors())
Run Code Online (Sandbox Code Playgroud)
有tf.contrib.data.ignore_errors。我自己从未尝试过,但根据文档,用法很简单
dataset = dataset.map(some_map_function)
dataset = dataset.apply(tf.contrib.data.ignore_errors())
Run Code Online (Sandbox Code Playgroud)
它应该简单地传递输入(即返回相同的数据集),但忽略任何引发错误的内容。