繁体   English   中英

如何使用Tensorflow中的其他示例转换来扩展tf.data.Dataset

[英]How to expand tf.data.Dataset with additional example transformations in Tensorflow

我想通过向其添加随机噪声来动态地在拉伸张量流中训练神经网络时使用的现有数据集的大小加倍。 因此,完成后,我将拥有所有现有示例以及所有添加了噪点的示例。 我还想在对它们进行变换时对它们进行交织,所以它们按以下顺序出现:示例1无噪声,示例1有噪声,示例2无噪声,示例2有噪声等。我正在努力实现这一目标使用数据集API。 我尝试使用unbatch来完成此任务,如下所示:

def generate_permutations(features, labels):
    return [
        [features, labels],
        [add_noise(features), labels]
    ]

dataset.map(generate_permutations).apply(tf.contrib.data.unbatch())

但是我收到一个错误消息,指出Shapes must be equal rank, but are 2 and 1 我猜想tensorflow试图从我返回的那一批中生成张量,但是featureslabels是不同的形状,所以不起作用。 我可能只需要制作两个数据集并将它们浓缩在一起就可以做到这一点,但是我担心这会导致训练偏斜,在此期间我会很好地训练一半的时间,突然之间所有数据在第二个数据中都进行了新的转换半。 在送入张量流之前,如何在不将这些转换写入磁盘的情况下即时完成此操作?

Dataset.flat_map()转换是您需要的工具:它使您可以将单个输入元素映射到多个元素,然后展平结果。 您的代码如下所示:

def generate_permutations(features, labels):
    regular_ds = tf.data.Dataset.from_tensors((features, labels))
    noisy_ds = tf.data.Dataset.from_tensors((add_noise(features), labels))
    return regular_ds.concatenate(noisy_ds)

dataset = dataset.flat_map(generate_permutations)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM