是否可以在keras中编写一个自定义损失函数,这样写道:“对于数据集A的所有数据:像这样计算损失……对于数据集B的所有数据:像这样计算损失。”
我目前的实现有两个独立的模型,它们有自己的损失函数,然后在单独的train_on_batch调用中给出两个数据提要。
对于上下文,我的系统是一个GAN,它的任务是在两个数据集之间创建域不可区分的表示,同时还执行分类。然而,使用我目前的方法,感觉好像“领域不可区分”任务是优先的,我的分类准确率并没有上升到随机以上。(然而,如果我关闭域任务,分类准确率将上升到大约80%)。我想要排除的一个问题是,每个训练循环都会有多个非混洗数据的train_on_batch调用。
发布于 2020-07-14 03:03:05
对于后来可能会遇到这个问题的任何人,我现在意识到,关于实际答案是什么,我的问题表达得很糟糕。这个问题实际上是通过“如何计算梯度并在keras中将它们作为单独的操作来应用”来回答的。
我的解决方案是覆盖Model类,创建一个接受多个dataset的新train_on_batch方法。然后,在gradientTape中应用任意数量的计算和损失函数。最后,使用optimizer.apply_gradient()将渐变实际应用于模型
https://stackoverflow.com/questions/62395291
复制相似问题