[903821]: / utils / __pycache__ / losses.cpython-36.pyc

Download this file

30 lines (27 with data), 3.9 kB

3

áMc”ã@stddlZddljZddljjZdd„Zddd„Zddd„Zdd	d
„Z	ddd
„Z
dd„Zdd„ZGdd„dej
ƒZdS)éNcCsZ|jƒ}d}tj||ƒ}tj||ƒ}tj||ƒ}d|||||}d|}|S)Ngñh㈵øä>éé)ÚfloatÚtorchÚsum)ÚscoreÚtargetÚsmoothÚ	intersectZy_sumZz_sumÚloss©rú</data/omnisky/postgraduate/Yb/RainsGit/LASeg/utils/losses.pyÚ	dice_losssrç:Œ0âŽyE>cCs>dtj||ƒ|}tj|ƒtj|ƒ|}d||}|S)Nrr)rr)Z
predictiverÚepÚintersectionÚunionrrrr
ÚBinary_dice_losssrcCs$tjdd}|tj||ƒ|ƒ}|S)NÚmean)Ú	reduction)ÚnnÚ	KLDivLossrÚlog)ÚinputsÚtargetsrÚkl_lossZconsist_lossrrr
rsrcCs^tj||ƒ}tj|dd…ddf|dd…ddf|dd…ddf|dd…ddfƒS)Nr.r)rrr)rrrÚlogprobsrrr
Úsoft_ce_losssrFcCsd|jƒ|jƒkst‚|r4tjtj|ƒƒ}tj|ƒ}ntj|dd}tj|dd}tj||dd}|S)zãTakes softmax on both sides and returns KL divergence

    Note:
    - Returns the sum over all examples. Divide by the batch size afterwards
      if you want the mean.
    - Sends gradients to inputs but not the targets.
    r)Údimr)r)	ÚsizeÚAssertionErrorrrÚsigmoidÚFÚlog_softmaxÚsoftmaxÚkl_div)Úinput_logitsÚ
target_logitsr!Zinput_log_softmaxÚtarget_softmaxr%rrr
Úsoftmax_kl_losssr)cCs@|jƒ|jƒkst‚tj|dd}tj|dd}tj||ƒ}|S)zÞTakes softmax on both sides and returns MSE loss

    Note:
    - Returns the sum over all examples. Divide by the batch size afterwards
      if you want the mean.
    - Sends gradients to inputs but not the targets.
    r)r)rr r"r$Úmse_loss)r&r'Z
input_softmaxr(r*rrr
Úsoftmax_mse_loss3s
r+cCstj||dƒS)Nr)rr)Úinput1Úinput2rrr
r*Bsr*cs6eZdZ‡fdd„Zdd„Zdd„Zdd	d
„Z‡ZS)ÚDiceLosscstt|ƒjƒ||_dS)N)Úsuperr.Ú__init__Ú	n_classes)Úselfr1)Ú	__class__rr
r0FszDiceLoss.__init__cCsJg}x.t|jƒD] }||tj|ƒk}|j|ƒqWtj|dd}|jƒS)Nr)r)Úranger1rÚ	ones_likeÚappendÚcatr)r2Úinput_tensorÚtensor_listÚiZ	temp_probZ
output_tensorrrr
Ú_one_hot_encoderJszDiceLoss._one_hot_encodercCsJ|jƒ}d}tj||ƒ}tj||ƒtj||ƒ|}d||}|S)Ng»½×Ùß|Û=r)rrr)r2rrr	rrrrrr
Ú
_dice_lossRs zDiceLoss._dice_lossNFc	Cs¶|rtj|dd}|j|ƒ}|dkr0dg|j}|jƒ|jƒksHtdƒ‚g}d}xZtd|jƒD]J}|j|dd…|f|dd…|fƒ}|jd|j	ƒƒ||||7}q^W||jS)Nr)rz#predict & target shape do not matchgrgð?)
rr$r;r1rr r4r<r6Úitem)	r2rrÚweightr$Zclass_wise_dicerr:Údicerrr
ÚforwardZs
$zDiceLoss.forward)NF)Ú__name__Ú
__module__Ú__qualname__r0r;r<r@Ú
__classcell__rr)r3r
r.Esr.)r)r)r)F)rÚtorch.nnrÚtorch.nn.functionalÚ
functionalr"rrrrr)r+r*ÚModuler.rrrr
Ú<module>s