我有一组50
形状为(50,128,128,1)
的图像,在TensorFlow中表示为张量。假设25th
和30th
图像只是零幅图像,但我不知道哪些图像都预先为零(本例中的25th
和30th
只是为了使情况更清楚)。我希望删除此类图像并使用张量为(48,128,128,1)
的张量。如何在Tensorflow中实现这一点而又不遍历张量的0th
维度50
次并检查每个图像是否为tf.reduce_sum(tf.abs(image_i))>0
。
答案 0 :(得分:2)
您可以使用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
您可以阅读更多here。这不是一个循环,它在每个元素(您所用的每个图像)上并行工作。因此速度很快。