【发布时间】:2018-04-06 21:41:51
【问题描述】:
我有一个关于新数据集 API (tensorflow 1.4rc1) 的问题。
我对标签0 和1 有一个不平衡的数据集。我的目标是在预处理期间创建平衡的小批量。
假设我有两个过滤数据集:
ds_pos = dataset.filter(lambda l, x, y, z: tf.reshape(tf.equal(l, 1), []))
ds_neg = dataset.filter(lambda l, x, y, z: tf.reshape(tf.equal(l, 0), [])).repeat()
有没有办法将这两个数据集组合起来,使生成的数据集看起来像ds = [0, 1, 0, 1, 0, 1]:
类似这样的:
dataset = tf.data.Dataset.zip((ds_pos, ds_neg))
dataset = dataset.apply(...)
# dataset looks like [0, 1, 0, 1, 0, 1, ...]
dataset = dataset.batch(20)
我目前的做法是:
def _concat(x, y):
return tf.cond(tf.random_uniform(()) > 0.5, lambda: x, lambda: y)
dataset = tf.data.Dataset.zip((ds_pos, ds_neg))
dataset = dataset.map(_concat)
但我觉得有一种更优雅的方式。
提前致谢!
【问题讨论】:
标签: tensorflow tensorflow-datasets