首页 > 解决方案 > 有效地从 TensorFlow 中的张量中删除零图像

问题描述

我有一组50形状图像,(50,128,128,1)在 TensorFlow 中表示为张量。假设25thand30th图像只是零图像,但我事先不知道哪些图像都为零(25th30th此示例中只是为了使情况更清楚)。我希望删除这些图像并拥有一个大小为 的张量(48,128,128,1)。如果不遍历0th张量50时间的维度并检查每个图像,如何在 Tensorflow 中实现这一点tf.reduce_sum(tf.abs(image_i))>0

标签: tensorflowimage-processingdeep-learningtensortensorflow-datasets

解决方案


您可以使用Dataset.map(some_fn). 在这里,您可以定义some_fn将使用您的逻辑检查每个张量的值tf.reduce_sum()。所以,如果 的值total为零,那么你可以忽略它,否则你可以保留它。

def some_fn():
    image = tf.fill([8,8], 0)# dummy tensor values
    image_row = tf.slice(image, [1,0], [1, -1])
    total = tf.reduce_sum(tf.abs(image_row)) # total = 0
    return total

你可以在这里阅读更多。这不是一个循环,它在每个元素(在你的情况下是每个图像)上并行工作。所以它很快。


推荐阅读