神经网络中的多个输出大小

数据挖掘 美国有线电视新闻网 损失函数 图像分割 多输出
2022-02-28 08:31:24

在论文“A NOVEL FOCAL TVERSKY Loss FUNCTION WITH IMPROVED ATTENTIONU-NETFOR LESION SEGMENTATION”中,作者通过输出多个具有不同尺度的输出掩码来使用深度监督。

我不明白它如何处理损失函数。y_pred 和 y_true 不共享最终输出的相同维度。

model = Model(inputs=[img_input], outputs=[out6, out7, out8, out9])

输入似乎只是具有真实分辨率的输入

在此处输入图像描述

我检查了代码(https://github.com/nabsabraham/focal-tversky-unet/blob/master/newmodels.py),我没有看到任何可以使它工作的特别之处。损失函数也没有明确地处理它。

1个回答

正如您在newmodels.py模型中的第 286-296 行中看到的那样,可以对四个不同的输出使用两种不同的损失函数。

loss = {'pred1':lossfxn,
        'pred2':lossfxn,
        'pred3':lossfxn,
        'final': losses.tversky_loss}
    
loss_weights = {'pred1':1,
                'pred2':1,
                'pred3':1,
                'final':1}
model.compile(optimizer=opt, loss=loss, loss_weights=loss_weights,
              metrics=[losses.dsc])

模型的前三个输出out6,out7out8使用损失函数 ,lossfxn作为函数的第三个参数给出attn_regisic_train.py中,这恰好是焦点 Tversky 损失。对于 UNet ( out9) 的最终输出,始终使用 Focal Tversky Loss。模型的总损失是四个模型输出的不同损失的加权和,它等于所有权重都设置为 1 in 的总和loss_weights