互斥任务的多任务学习?

问题描述 投票:1回答:1

Multi-task learning

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

python keras deep-learning pytorch multitasking
1个回答
0
投票

我想你想在训练时交替执行这两个任务。我也会假设你要在同一批次内混合使用这两个任务。

你可以制作一个自定义的 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 另一方面,对于自然图像来说。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()
© www.soinside.com 2019 - 2024. All rights reserved.