首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用互斥任务的多任务学习?

使用互斥任务的多任务学习?
EN

Stack Overflow用户
提问于 2020-06-01 20:42:56
回答 1查看 354关注 0票数 1

我希望通过使用图中所示的共享层执行分割和分类来执行多任务学习。然而,输出1将是一个分段掩码,它使用不同的损失函数,如骰子损失,输出2使用softmax激活来提供类别概率。而且,数据是相互排斥的,分割任务来自自然图像领域,而分类任务来自医学图像领域。Keras或Pytorch是否有明确的方法或示例来演示这种多任务学习任务?

EN

回答 1

Stack Overflow用户

发布于 2020-06-01 20:59:29

我想你应该在训练时交替执行这两项任务。

我还将假设您将在同一批中混合这两个任务。

您可以创建一个自定义的Dataset,它返回

代码语言:javascript
复制
class MixedDataset(Dataset):
  # ...
  def __getitem__(self, index):
    # ... get data according to index
    return img, seg, seg_flag, class, class_flag

对于医学图像,seg将是一个虚拟掩码,seg_flag将为0,而class将成为目标类,class_flag将为1。

另一方面,对于自然图像,seg将是所需的分割掩码,seg_flag为1,而class将是虚拟的,class_flag为0。

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

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62132445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档