U l¹xdEã@sDddlZddlmZddlmZdd„Zdd„Zdd„Zd d „Z dS) éN)Ú functionalc Cs`d}t||ƒD]H\}}t||ƒD]4\}}| ¡ ¡}| ¡}|t t ||¡¡7}q q|dS)Nré)ÚzipÚfloatÚdetachÚtorchÚmeanÚabs)Úfmap_rÚfmap_gÚlossÚdrÚdgÚrlÚgl©rú D:\so-vits-svc\modules\losses.pyÚ feature_losss rc Cs‚d}g}g}t||ƒD]`\}}| ¡}| ¡}t d|d¡}t |d¡}|||7}| | ¡¡| | ¡¡q|||fS©Nrér)rrrrÚappendÚitem) Údisc_real_outputsÚdisc_generated_outputsr Úr_lossesÚg_lossesr rÚr_lossÚg_lossrrrÚdiscriminator_losss rcCsFd}g}|D]0}| ¡}t d|d¡}| |¡||7}q ||fSr)rrrr)Ú disc_outputsr Ú gen_lossesrÚlrrrÚgenerator_loss"s  r"cCsv| ¡}| ¡}| ¡}| ¡}| ¡}||d}|d||dt d|¡7}t ||¡}|t |¡}|S)z9 z_p, logs_q: [b, h, t_t] m_p, logs_p: [b, h, t_t] gà?rgÀ)rrÚexpÚsum)Úz_pÚlogs_qÚm_pÚlogs_pÚz_maskÚklr!rrrÚkl_loss.s "r+) rÚtorch.nnrÚFÚmodules.commonsÚcommonsrrr"r+rrrrÚs