【问题标题】:Multi-task learning with mutually exclusive tasks?具有互斥任务的多任务学习?
【发布时间】:2020-09-19 18:24:37
【问题描述】:

我希望通过使用共享层执行分割和分类来执行多任务学习,如图所示。然而,输出 1 将是一个分割掩码,它与 Dice 损失等不同的损失函数一起工作,输出 2 与 softmax 激活一起工作以提供类概率。此外,数据是互斥的,分割任务来自自然图像域,分类任务来自医学图像域。 Keras 或 Pytorch 是否有明确的方式或示例来演示此类多任务学习任务?

【问题讨论】:

    标签: python keras deep-learning pytorch multitasking


    【解决方案1】:

    我想您想在训练时交替执行这两项任务。
    我还将假设您将在同一个批次中混合这两个任务。

    你可以自定义一个返回的Dataset

    class MixedDataset(Dataset):
      # ...
      def __getitem__(self, index):
        # ... get data according to index
        return img, seg, seg_flag, class, class_flag
    

    对于医学图像,seg 将是一个虚拟掩码,seg_flag 将为零,而class 将成为目标类,class_flag 为 1。
    另一方面,对于自然图像,seg 将是所需的分割掩码,seg_flag 为 1,而class 将是一个虚拟图像,class_flag 为零。

    现在你可以运行你的训练代码了:

    for i, (img, seg, seg_flag, class, class_flag) in train_loader:
      opt.zero_grad()
      pred_mask, pred_class = model(img)  # predict both
      loss_seg = seg_flag * dice_loss_fuction(pred_mask, seg)
      loss_class = class_flag * cross_entropy_loss_function(pred_class, class)
      (loss_seg + loss_class).backward()
      opt.step()
    

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 2018-03-17
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多