具有相同输入和输出的模型中的生成器数据加载器

Generator dataloader in models with the same inputs and outputs

我正在尝试实现一个输出与其输入相同的模型。这是一个广泛模型的简单部分,我删除了复杂的部分。我写了一个生成随机数的数据加载器。

def random_generator():
    tf.random.set_seed(43)
    while True:
        yield tf.random.uniform((3,), 0, 1, dtype=tf.dtypes.float32, seed=32)

random_dataset = tf.data.Dataset.from_generator(
    random_generator,
    output_types=tf.float32,
    output_shapes=(3,)
)

我需要对输入和输出使用相同的数据加载器,但在压缩时我会得到不同的输入和输出。

dataloader = tf.data.Dataset.zip((random_dataset, random_dataset))
model.fit(dataloader, epochs=200, batch_size=32)

是否有任何方法可以复制数据集或生成随机数字数组,以便在第二次调用时产生相同的结果?

您可以使用 TensorFlow 生成器种子 setter 并将两个种子设置为一个数字。

def random_generator():
    generator = tf.random.Generator.from_seed(43)
    while True:
        yield tf.round(
            generator.uniform((3,), 0, 1, dtype=tf.dtypes.float32)
        )

现在让生成器数据加载器在第二次调用中给我们相同的结果。