【问题标题】:Removing zero images from a tensor in TensorFlow efficiently有效地从 TensorFlow 中的张量中删除零图像
【发布时间】:2020-05-04 08:24:33
【问题描述】:

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

【问题讨论】:

    标签: tensorflow image-processing deep-learning tensor tensorflow-datasets


    【解决方案1】:

    您可以使用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更多。这不是一个循环,它在每个元素(在您的情况下为每个图像)并行工作。所以它很快。

    【讨论】:

    • 谢谢。您能否发布一个具有任意大小 (50,x,y,1) 的张量的示例工作示例,以便我可以快速尝试并理解执行它的代码?
    • 再次感谢您。但是您编辑的答案没有使用Dataset.map。我猜你给出了some_fn 中使用的逻辑的答案。如果您可以编辑它,我可以接受答案
    • 我做了一些修改。很抱歉之前没有说清楚。尽管如此,我希望它对你有所帮助。另外,请采纳答案。干杯!
    猜你喜欢
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 2019-02-26
    • 2021-06-18
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多