有效地去除TensorFlow中张量的零图像

有效地去除TensorFlow中张量的零图像,tensorflow,image-processing,deep-learning,tensor,tensorflow-datasets,Tensorflow,Image Processing,Deep Learning,Tensor,Tensorflow Datasets,我有一组50形状的图像(50128128,1),在TensorFlow中表示为张量。假设25th和30th图像只是零图像,但我不知道哪些图像在之前都是零(本例中25th和30th只是为了让情况更清楚)。我希望删除这些图像,并有一个大小为(48128128,1)的张量。如何在Tensorflow中实现这一点,而无需循环通过tensor的0次50次维度,并在tf.reduce\u sum(tf.abs(image\u i))>0时检查每个图像,您可以使用Dataset.map(some\u fn)。

我有一组
50
形状的图像
(50128128,1)
,在TensorFlow中表示为张量。假设
25th
30th
图像只是零图像,但我不知道哪些图像在之前都是零(本例中
25th
30th
只是为了让情况更清楚)。我希望删除这些图像,并有一个大小为
(48128128,1)
的张量。如何在Tensorflow中实现这一点,而无需循环通过tensor的
0次
50次
维度,并在
tf.reduce\u sum(tf.abs(image\u i))>0时检查每个图像,您可以使用
Dataset.map(some\u fn)
。在这里,您可以定义一些将使用逻辑检查每个张量值的
tf.reduce\u 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


你可以读更多。这不是一个循环,它在每个元素(您案例中的每个图像)上并行工作,因此速度很快。

谢谢。你能发布一个带有任意张量(50,x,y,1)的工作示例吗?这样我就可以快速尝试并理解执行它的代码了。再次感谢你。但是您编辑的答案没有使用
Dataset.map
。我想你给出了在
中使用的逻辑的答案。如果你能编辑它,我可以接受答案,我已经做了一些编辑。对不起,刚才不清楚。尽管如此,我希望它对你有所帮助。另外,请接受答案。干杯