我有三个数据集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))
...发布于 2018-04-24 07:45:33
如果有人感兴趣,我找到了以下解决方案:
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)发布于 2022-01-08 14:55:47
使用tf.data.Dataset.concatenate创建一个新的数据集:
D = D1.concatenate(D2).concatenate(D3)https://stackoverflow.com/questions/49994496
复制相似问题