使用相互排斥的任务进行多任务学习?

2024-05-15 05:42:22 发布

您现在位置:Python中文网/ 问答频道 /正文

Multi-task learning

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


Tags: 数据函数图像示例方式分类pytorch骰子
1条回答
网友
1楼 · 发布于 2024-05-15 05:42:22

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

您可以创建一个自定义的^{}返回

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()

相关问题 更多 >

    热门问题