【问题标题】:Splitting up types of data in a keras loss function (equivalent to if statements in loss functions?)在 keras 损失函数中拆分数据类型(相当于损失函数中的 if 语句?)
【发布时间】:2020-10-05 06:46:32
【问题描述】:

是否可以在 keras 中编写一个自定义损失函数,上面写着“对于数据集 A 中的所有数据:计算这样的损失......而对于数据集 B 中的所有数据:这样计算损失”

我当前的实现有 2 个具有自己的损失函数的独立模型,然后在单独的 train_on_batch 调用中给出 2 个数据馈送。

就上下文而言,我的系统是一个 GAN,其任务是在两个数据集之间创建一个域不可区分的表示,同时执行分类。但是,使用我当前的方法,感觉好像“域不可区分性”任务处于优先地位,而我的分类准确性并没有超出随机性。 (而如果我关闭域任务,分类准确率会上升到大约 80%)。我想排除的一个问题是在每个训练循环中多次调用 train_on_batch 和非混洗数据。

【问题讨论】:

    标签: python tensorflow keras generative-adversarial-network


    【解决方案1】:

    对于以后可能会偶然发现这个问题的任何人,我现在意识到我对这个问题的措辞与实际答案有关。这个问题实际上是通过“如何计算梯度并将它们作为 keras 中的单独操作应用”来回答的

    我的解决方案是覆盖 Model 类,创建一个接受多个数据集的新 train_on_batch 方法。 然后在 gradientTape 中应用您想要的许多计算和损失函数。然后最后使用 optimizer.apply_gradient() 将梯度实际应用到模型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-03
      • 2019-01-20
      • 1970-01-01
      • 2018-10-10
      • 2018-09-03
      • 2018-10-21
      • 2019-04-05
      • 2017-08-17
      相关资源
      最近更新 更多