首页 > 解决方案 > 具有相同输入和输出的模型中的生成器数据加载器

问题描述

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

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)

有没有办法复制数据集或生成随机数字数组,以便在第二次调用中产生相同的结果?

标签: pythontensorflowdataloader

解决方案


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

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

现在制作生成器数据加载器会在第二次调用中为我们提供相同的结果。


推荐阅读