o
    ߥi                     @   s4   d dl Z d dlZddgZdd Zdd Zdd ZdS )    Nkl_divergence#discretized_gaussian_log_likelihoodc                 C   s6   dd| | t ||  | | d t |    S )N      ?g         )torchexp)mu1logvar1mu2logvar2 r   j/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/multi_modal/videocomposer/ops/losses.pyr   
   s
   c                 C   s2   ddt tdtj | dt | d     S )zYA fast approximation of the cumulative distribution function of the standard normal.
    r         ?g       @gHm?   )r   tanhmathsqrtpipow)xr   r   r   standard_normal_cdf   s   "r   c                 C   s   | j |j   kr|j ksJ  J | | }t| }t||d  }t||d  }t|jdd}td| jdd}|| }	t| dk |t| dk|t|	jdd}
|
j | j ksbJ |
S )Ngp?g-q=)minr   g+g+?)shaper   r   r   logclampwhere)x0mean	log_scalecxinv_stdvcdf_pluscdf_minlog_cdf_pluslog_one_minus_cdf_min	cdf_delta	log_probsr   r   r   r      s    ")r   r   __all__r   r   r   r   r   r   r   <module>   s   