【问题标题】:Mixing multiple tf.data.Dataset?混合多个 tf.data.Dataset?
【发布时间】:2018-04-24 06:07:27
【问题描述】:

我有三个数据集 D1、D2、D3,它们输出相同类型的数据。我要做的是从一个独特的管道随机输出 D1 或 D2 或 D3 。我尝试使用tf.data.Dataset.zip((D1, D2, D3)),但后来我不知道如何压平它的输出以便对其进行洗牌,然后得到像D1_element, D3_element,D1_element , D2_element ... 这样的输出 这是一个小例子:

import tensorflow as tf

D1 = tf.data.Dataset.range(1,5)
D2 = tf.data.Dataset.range(5,10)
D3 = tf.data.Dataset.range(10,15)

zip = tf.data.Dataset.zip((D1,D2,D2))
...

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    如果有人感兴趣,我找到了以下解决方案:

    import tensorflow as tf
    
    def stack(*inputs):
        return tf.stack(inputs)
    
    D1 = tf.data.Dataset.range(1,5)
    D2 = tf.data.Dataset.range(5,10)
    D3 = tf.data.Dataset.range(10,15)
    
    D = tf.data.Dataset.zip((D1,D2,D3))
    D = D.map(stack)
    D = D.apply(tf.contrib.data.unbatch())
    D = D.shuffle(10, seed=0)
    D = D.batch(3)
    D = D.prefetch(1)
    
    it = D.make_one_shot_iterator()
    next_element = it.get_next()
    
    with tf.Session() as sess:
        print sess.run(next_element)
    

    【讨论】:

      【解决方案2】:

      使用tf.data.Dataset.concatenate 创建新数据集:

      D = D1.concatenate(D2).concatenate(D3)
      

      看看Is there a way to stack two tensorflow datasets?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-20
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-31
        相关资源
        最近更新 更多