有效地去除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
。我想你给出了在中使用的逻辑的答案。如果你能编辑它,我可以接受答案,我已经做了一些编辑。对不起,刚才不清楚。尽管如此,我希望它对你有所帮助。另外,请接受答案。干杯