您的功能请求是否与问题相关?请描述。
训练GAN的过程可能如下:
这与ECD(编码器-组合器-解码器)过程有很大不同。那么我们如何使用ludwig训练GAN呢?如果现在不支持,如果我真的很想要它,我该怎么办(任何帮助或见解将非常感谢)
ztmd8pv51#
嘿,@ericxsun,很好的建议!我认为Ludwig确实应该支持更复杂的训练过程,如GANs,只是在这些情况下正确的用户体验是什么问题。如果我们单独考虑生成器和判别器,它们都可以作为不同的Ludwig模型定义来表示。然后复杂性在于训练过程本身。具体来说,我们需要支持以下内容:
model_name: optimizer
我认为这些都是提高Ludwig灵活性的好一般改进。如果你觉得我遗漏了什么,请告诉我。
xuo3flqw2#
另外值得一提的是,类似的事情今天应该可以通过train_online API用编程方式实现。例如:
generator = LudwigModel(generator_config) discriminator = LudwigModel(discriminator_config) real_samples = load_dataset() for epoch in epochs: synthetic_dataset = generate_random_noise() generator.train_online(synthetic_dataset) generated_samples = generator.predict(generate_random_noise()) combined_dataset = merge(generated_samples, real_samples) discriminator.train_online(combined_dataset)
采用这种方法,目前唯一缺失的部分是生成器(以及解码器,如果你使用的是图像或音频数据)的自定义损失函数,但这应该是可以解决的。
6ljaweal3#
太好了,我来看看。非常感谢。
brqmpdu14#
我同意@tgaddair的观点,但这里有一个警告,那就是目前在Ludwig中没有支持在两个LudwigModel示例之间流动的梯度。这意味着当你训练判别器时,生成器不会被更新。我们需要考虑如何实现这一点,这可能会对内部产生影响。我们还在考虑另一个替代方案,即允许更自定义Ludwig管道的实际模型部分。我们认为这个改变将使GAN类似的训练过程成为可能,尽管它不会比几个版本更早到来。
4条答案
按热度按时间ztmd8pv51#
嘿,@ericxsun,很好的建议!我认为Ludwig确实应该支持更复杂的训练过程,如GANs,只是在这些情况下正确的用户体验是什么问题。
如果我们单独考虑生成器和判别器,它们都可以作为不同的Ludwig模型定义来表示。然后复杂性在于训练过程本身。具体来说,我们需要支持以下内容:
model_name: optimizer
)我认为这些都是提高Ludwig灵活性的好一般改进。如果你觉得我遗漏了什么,请告诉我。
xuo3flqw2#
另外值得一提的是,类似的事情今天应该可以通过train_online API用编程方式实现。例如:
采用这种方法,目前唯一缺失的部分是生成器(以及解码器,如果你使用的是图像或音频数据)的自定义损失函数,但这应该是可以解决的。
6ljaweal3#
太好了,我来看看。非常感谢。
brqmpdu14#
我同意@tgaddair的观点,但这里有一个警告,那就是目前在Ludwig中没有支持在两个LudwigModel示例之间流动的梯度。这意味着当你训练判别器时,生成器不会被更新。
我们需要考虑如何实现这一点,这可能会对内部产生影响。
我们还在考虑另一个替代方案,即允许更自定义Ludwig管道的实际模型部分。我们认为这个改变将使GAN类似的训练过程成为可能,尽管它不会比几个版本更早到来。