使用数据集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.]
这将终止会话。
如果这些错误只是被忽略并且管道转移到下一个组合,我会更喜欢。
(我了解针对此特定问题的正确修复方法是将时间花在检查每个边界框上,并且可以在之前的步骤中检查图像尺寸大小,并使用{{1}进行过滤}操作在通过裁剪操作到达filter
之前,我想知道是否有一种简单的方法可以忽略该错误并转到下一个情况,以便在该特定情况下以及在更常见的情况)
答案 0 :(得分:2)
有tf.contrib.data.ignore_errors
。我从未亲自尝试过,但是根据the docs的用法很简单
dataset = dataset.map(some_map_function)
dataset = dataset.apply(tf.contrib.data.ignore_errors())
它应该简单地通过输入(即返回相同的数据集),但忽略任何引发错误的信息。
答案 1 :(得分:0)
对于Tensorflow 2
dataset = dataset.apply(tf.data.experimental.ignore_errors())