§
    ®˜ºh“#  ã                   ó¨   — d dl Z d dlmZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZ d	gZ G d
„ d	e	¦  «        ZdS )é    N)ÚOptionalÚUnion)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_allÚclamp_probsÚlazy_propertyÚlogits_to_probsÚprobs_to_logits)Ú binary_cross_entropy_with_logits)Ú_NumberÚ_sizeÚNumberÚContinuousBernoullic                   ó8  ‡ — e Zd ZdZej        ej        dœZej        ZdZ	dZ
	 	 	 	 d!deeeef                  deeeef                  d	eeef         d
ee         ddf
ˆ fd„Zd"ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedej         fd„¦   «         Z! ej         ¦   «         fd„Z" ej         ¦   «         fde#defd„Z$d„ Z%d„ Z&d„ Z'd„ Z(edee         fd„¦   «         Z)d „ Z*ˆ xZ+S )#r   aÕ  
    Creates a continuous Bernoulli distribution parameterized by :attr:`probs`
    or :attr:`logits` (but not both).

    The distribution is supported in [0, 1] and parameterized by 'probs' (in
    (0,1)) or 'logits' (real-valued). Note that, unlike the Bernoulli, 'probs'
    does not correspond to a probability and 'logits' does not correspond to
    log-odds, but the same names are used due to the similarity with the
    Bernoulli. See [1] for more details.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = ContinuousBernoulli(torch.tensor([0.3]))
        >>> m.sample()
        tensor([ 0.2538])

    Args:
        probs (Number, Tensor): (0,1) valued parameters
        logits (Number, Tensor): real valued parameters whose sigmoid matches 'probs'

    [1] The continuous Bernoulli: fixing a pervasive error in variational
    autoencoders, Loaiza-Ganem G and Cunningham JP, NeurIPS 2019.
    https://arxiv.org/abs/1907.06845
    )ÚprobsÚlogitsr   TN©gV-²�ïß?gÕxé&1à?r   r   ÚlimsÚvalidate_argsÚreturnc                 ó’  •— |d u |d u k    rt          d¦  «        ‚|��t          |t          ¦  «        }t          |¦  «        \  | _        |�F| j        d                              | j        ¦  «                             ¦   «         st          d¦  «        ‚t          | j        ¦  «        | _        n/|€J ‚t          |t          ¦  «        }t          |¦  «        \  | _	        |�| j        n| j	        | _
        |rt          j        ¦   «         }n| j
                             ¦   «         }|| _        t          ¦   «                              ||¬¦  «         d S )Nz;Either `probs` or `logits` must be specified, but not both.r   z&The parameter probs has invalid values©r   )Ú
ValueErrorÚ
isinstancer   r   r   Úarg_constraintsÚcheckÚallr	   r   Ú_paramÚtorchÚSizeÚsizeÚ_limsÚsuperÚ__init__)Úselfr   r   r   r   Ú	is_scalarÚbatch_shapeÚ	__class__s          €úp/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/distributions/continuous_bernoulli.pyr&   zContinuousBernoulli.__init__7   s>  ø€ ð �TˆM˜v¨˜~Ò.Ð.ÝØMñô ð ð ÐÝ" 5­'Ñ2Ô2ˆIÝ)¨%Ñ0Ô0‰MˆTŒZð Ð(ØÔ+¨GÔ4×:Ò:¸4¼:ÑFÔF×JÒJÑLÔLð OÝ$Ð%MÑNÔNÐNÝ$ T¤ZÑ0Ô0ˆDŒJˆJàÐ%Ð%Ð%Ý" 6­7Ñ3Ô3ˆIÝ*¨6Ñ2Ô2‰NˆTŒ[Ø$)Ð$5�d”j�j¸4¼;ˆŒØð 	-Ýœ*™,œ,ˆKˆKàœ+×*Ò*Ñ,Ô,ˆKØˆŒ
Ý‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBó    c                 óº  •— |                       t          |¦  «        }| j        |_        t          j        |¦  «        }d| j        v r+| j                             |¦  «        |_        |j        |_        d| j        v r+| j	                             |¦  «        |_	        |j	        |_        t          t          |¦  «                             |d¬¦  «         | j        |_        |S )Nr   r   Fr   )Ú_get_checked_instancer   r$   r!   r"   Ú__dict__r   Úexpandr    r   r%   r&   Ú_validate_args)r'   r)   Ú	_instanceÚnewr*   s       €r+   r0   zContinuousBernoulli.expandW   s¿   ø€ Ø×(Ò(Õ)<¸iÑHÔHˆØ”JˆŒ	Ý”j Ñ-Ô-ˆØ�d”mÐ#Ð#Øœ
×)Ò)¨+Ñ6Ô6ˆCŒIØœˆCŒJØ�t”}Ð$Ð$Øœ×+Ò+¨KÑ8Ô8ˆCŒJØœˆCŒJÝÕ! 3Ñ'Ô'×0Ò0°ÈEÐ0ÑRÔRÐRØ!Ô0ˆÔØˆ
r,   c                 ó&   —  | j         j        |i |¤ŽS ©N)r    r3   )r'   ÚargsÚkwargss      r+   Ú_newzContinuousBernoulli._newe   s   € ØˆtŒ{Œ Ð/¨Ð/Ð/Ð/r,   c                 ó¸   — t          j        t          j        | j        | j        d         ¦  «        t          j        | j        | j        d         ¦  «        ¦  «        S )Nr   é   )r!   ÚmaxÚler   r$   Úgt©r'   s    r+   Ú_outside_unstable_regionz,ContinuousBernoulli._outside_unstable_regionh   sD   € ÝŒyÝŒH�T”Z ¤¨A¤Ñ/Ô/µ´¸$¼*ÀdÄjÐQRÄmÑ1TÔ1Tñ
ô 
ð 	
r,   c                 ó¦   — t          j        |                      ¦   «         | j        | j        d         t          j        | j        ¦  «        z  ¦  «        S )Nr   )r!   Úwherer?   r   r$   Ú	ones_liker>   s    r+   Ú
_cut_probszContinuousBernoulli._cut_probsm   sD   € ÝŒ{Ø×)Ò)Ñ+Ô+ØŒJØŒJ�qŒM�EœO¨D¬JÑ7Ô7Ñ7ñ
ô 
ð 	
r,   c           	      ó*  — |                       ¦   «         }t          j        t          j        |d¦  «        |t          j        |¦  «        ¦  «        }t          j        t          j        |d¦  «        |t          j        |¦  «        ¦  «        }t          j        t          j        t          j	        | ¦  «        t          j        |¦  «        z
  ¦  «        ¦  «        t          j        t          j        |d¦  «        t          j	        d|z  ¦  «        t          j        d|z  dz
  ¦  «        ¦  «        z
  }t          j
        | j        dz
  d¦  «        }t          j        d¦  «        dd|z  z   |z  z   }t          j        |                      ¦   «         ||¦  «        S )zLcomputes the log normalizing constant as a function of the 'probs' parameterç      à?g       Àç       @ç      ð?é   gUUUUUUõ?gÒ'}Ò'}@)rC   r!   rA   r<   Ú
zeros_likeÚgerB   ÚlogÚabsÚlog1pÚpowr   Úmathr?   )r'   Ú	cut_probsÚcut_probs_below_halfÚcut_probs_above_halfÚlog_normÚxÚtaylors          r+   Ú_cont_bern_log_normz'ContinuousBernoulli._cont_bern_log_normt   sV  € à—O’OÑ%Ô%ˆ	Ý$œ{ÝŒH�Y Ñ$Ô$ iµÔ1AÀ)Ñ1LÔ1Lñ 
ô  
Ðõ  %œ{ÝŒH�Y Ñ$Ô$ iµ´ÀÑ1KÔ1Kñ 
ô  
Ðõ ”9ÝŒI•e”k 9 *Ñ-Ô-µ´	¸)Ñ0DÔ0DÑDÑEÔEñ
ô 
åŒKÝŒH�Y Ñ$Ô$ÝŒK˜Ð3Ñ3Ñ4Ô4ÝŒI�cÐ0Ñ0°3Ñ6Ñ7Ô7ñ
ô 
ñ
ˆõ ŒI�d”j 3Ñ&¨Ñ*Ô*ˆÝ”˜#‘” )¨l¸QÑ.>Ñ">À!Ñ!CÑCˆÝŒ{˜4×8Ò8Ñ:Ô:¸HÀfÑMÔMÐMr,   c                 óB  — |                       ¦   «         }|d|z  dz
  z  dt          j        | ¦  «        t          j        |¦  «        z
  z  z   }| j        dz
  }dddt          j        |d¦  «        z  z   |z  z   }t          j        |                      ¦   «         ||¦  «        S )NrF   rG   rE   gUUUUUUÕ?glÁlÁÖ?rH   )rC   r!   rM   rK   r   rN   rA   r?   )r'   rP   ÚmusrT   rU   s        r+   ÚmeanzContinuousBernoulli.meanˆ   sŸ   € à—O’OÑ%Ô%ˆ	Ø˜3 ™?¨SÑ0Ñ1°CÝŒK˜˜
Ñ#Ô#¥e¤i°	Ñ&:Ô&:Ñ:ñ5
ñ 
ˆð ŒJ˜ÑˆØ˜	 Kµ%´)¸A¸q±/´/Ñ$AÑAÀQÑFÑFˆÝŒ{˜4×8Ò8Ñ:Ô:¸CÀÑHÔHÐHr,   c                 ó4   — t          j        | j        ¦  «        S r5   )r!   ÚsqrtÚvariancer>   s    r+   ÚstddevzContinuousBernoulli.stddev’   s   € åŒz˜$œ-Ñ(Ô(Ð(r,   c                 óš  — |                       ¦   «         }||dz
  z  t          j        dd|z  z
  d¦  «        z  dt          j        t          j        | ¦  «        t          j        |¦  «        z
  d¦  «        z  z   }t          j        | j        dz
  d¦  «        }ddd|z  z
  |z  z
  }t          j        |                      ¦   «         ||¦  «        S )NrG   rF   rH   rE   gUUUUUUµ?g±?gg¼jVÁ?)rC   r!   rN   rM   rK   r   rA   r?   )r'   rP   ÚvarsrT   rU   s        r+   r\   zContinuousBernoulli.variance–   sÈ   € à—O’OÑ%Ô%ˆ	Ø˜I¨™OÑ,­u¬yØ�#˜	‘/Ñ! 1ñ0
ô 0
ñ 
à•%”)�EœK¨¨
Ñ3Ô3µe´iÀ	Ñ6JÔ6JÑJÈAÑNÔNÑNñOˆõ ŒI�d”j 3Ñ&¨Ñ*Ô*ˆØ˜z¨M¸AÑ,=Ñ=ÀÑBÑBˆÝŒ{˜4×8Ò8Ñ:Ô:¸DÀ&ÑIÔIÐIr,   c                 ó.   — t          | j        d¬¦  «        S ©NT)Ú	is_binary)r   r   r>   s    r+   r   zContinuousBernoulli.logits    s   € å˜tœz°TÐ:Ñ:Ô:Ð:r,   c                 óH   — t          t          | j        d¬¦  «        ¦  «        S ra   )r	   r   r   r>   s    r+   r   zContinuousBernoulli.probs¤   s   € å�?¨4¬;À$ÐGÑGÔGÑHÔHÐHr,   c                 ó4   — | j                              ¦   «         S r5   )r    r#   r>   s    r+   Úparam_shapezContinuousBernoulli.param_shape¨   s   € àŒ{×ÒÑ!Ô!Ð!r,   c                 ó  — |                       |¦  «        }t          j        || j        j        | j        j        ¬¦  «        }t          j        ¦   «         5  |                      |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S ©N)ÚdtypeÚdevice)Ú_extended_shaper!   Úrandr   rh   ri   Úno_gradÚicdf©r'   Úsample_shapeÚshapeÚus       r+   ÚsamplezContinuousBernoulli.sample¬   s²   € Ø×$Ò$ \Ñ2Ô2ˆÝŒJ�u D¤JÔ$4¸T¼ZÔ=NÐOÑOÔOˆÝŒ]‰_Œ_ð 	 ð 	 Ø—9’9˜Q‘<”<ð	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ÁA6Á6A:Á=A:ro   c                 ó¬   — |                       |¦  «        }t          j        || j        j        | j        j        ¬¦  «        }|                      |¦  «        S rg   )rj   r!   rk   r   rh   ri   rm   rn   s       r+   ÚrsamplezContinuousBernoulli.rsample²   sE   € Ø×$Ò$ \Ñ2Ô2ˆÝŒJ�u D¤JÔ$4¸T¼ZÔ=NÐOÑOÔOˆØ�yŠy˜‰|Œ|Ðr,   c                 óº   — | j         r|                      |¦  «         t          | j        |¦  «        \  }}t	          ||d¬¦  «         |                      ¦   «         z   S )NÚnone)Ú	reduction)r1   Ú_validate_sampler   r   r   rV   )r'   Úvaluer   s      r+   Úlog_probzContinuousBernoulli.log_prob·   sd   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ý% d¤k°5Ñ9Ô9‰ˆ�å-¨f°eÀvÐNÑNÔNÐNØ×&Ò&Ñ(Ô(ñ)ð	
r,   c           
      ó  — | j         r|                      |¦  «         |                      ¦   «         }t          j        ||¦  «        t          j        d|z
  d|z
  ¦  «        z  |z   dz
  d|z  dz
  z  }t          j        |                      ¦   «         ||¦  «        }t          j        t          j        |d¦  «        t          j        |¦  «        t          j        t          j	        |d¦  «        t          j
        |¦  «        |¦  «        ¦  «        S )NrG   rF   g        )r1   rx   rC   r!   rN   rA   r?   r<   rI   rJ   rB   )r'   ry   rP   ÚcdfsÚunbounded_cdfss        r+   ÚcdfzContinuousBernoulli.cdfÀ   sö   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø—O’OÑ%Ô%ˆ	åŒI�i Ñ'Ô'­%¬)°C¸)±OÀSÈ5Á[Ñ*QÔ*QÑQØñàñð �9‰_˜sÑ"ñ	$ˆõ
 œ T×%BÒ%BÑ%DÔ%DÀdÈEÑRÔRˆÝŒ{ÝŒH�U˜CÑ Ô ÝÔ˜UÑ#Ô#ÝŒK�œ ¨Ñ,Ô,­e¬o¸eÑ.DÔ.DÀnÑUÔUñ
ô 
ð 	
r,   c           	      ó:  — |                       ¦   «         }t          j        |                      ¦   «         t          j        | |d|z  dz
  z  z   ¦  «        t          j        | ¦  «        z
  t          j        |¦  «        t          j        | ¦  «        z
  z  |¦  «        S )NrF   rG   )rC   r!   rA   r?   rM   rK   )r'   ry   rP   s      r+   rm   zContinuousBernoulli.icdfÐ   s”   € Ø—O’OÑ%Ô%ˆ	ÝŒ{Ø×)Ò)Ñ+Ô+å”˜Y˜J¨°#¸	±/ÀCÑ2GÑ)HÑHÑIÔIÝ”+˜y˜jÑ)Ô)ñ*õ Œy˜Ñ#Ô#¥e¤k°9°*Ñ&=Ô&=Ñ=ñ	?ð
 ñ
ô 
ð 	
r,   c                 ó²   — t          j        | j         ¦  «        }t          j        | j        ¦  «        }| j        ||z
  z  |                      ¦   «         z
  |z
  S r5   )r!   rM   r   rK   rY   rV   )r'   Ú
log_probs0Ú
log_probs1s      r+   ÚentropyzContinuousBernoulli.entropyÜ   sV   € Ý”[ $¤* Ñ-Ô-ˆ
Ý”Y˜tœzÑ*Ô*ˆ
àŒI˜ jÑ0Ñ1Ø×&Ò&Ñ(Ô(ñ)àñð	
r,   c                 ó   — | j         fS r5   )r   r>   s    r+   Ú_natural_paramsz#ContinuousBernoulli._natural_paramså   s   € à”ˆ~Ðr,   c                 ó�  — t          j        t          j        || j        d         dz
  ¦  «        t          j        || j        d         dz
  ¦  «        ¦  «        }t          j        ||| j        d         dz
  t          j        |¦  «        z  ¦  «        }t          j        t          j        t           j	         
                    |¦  «        ¦  «        ¦  «        t          j        t          j        |¦  «        ¦  «        z
  }d|z  t          j        |d¦  «        dz  z   t          j        |d¦  «        dz  z
  }t          j        |||¦  «        S )zLcomputes the log normalizing constant as a function of the natural parameterr   rE   r:   rH   g      8@é   g     €¦@)r!   r;   r<   r$   r=   rA   rB   rK   rL   ÚspecialÚexpm1rN   )r'   rT   Úout_unst_regÚcut_nat_paramsrS   rU   s         r+   Ú_log_normalizerz#ContinuousBernoulli._log_normalizeré   s  € å”yÝŒH�Q˜œ
 1œ¨Ñ+Ñ,Ô,­e¬h°q¸$¼*ÀQ¼-È#Ñ:MÑ.NÔ.Nñ
ô 
ˆõ œØ˜!˜dœj¨œm¨cÑ1µU´_ÀQÑ5GÔ5GÑGñ
ô 
ˆõ ”9ÝŒI•e”m×)Ò)¨.Ñ9Ô9Ñ:Ô:ñ
ô 
åŒI•e”i Ñ/Ô/Ñ0Ô0ñ1ˆð �q‘�5œ9 Q¨™?œ?¨TÑ1Ñ1µE´I¸aÀ±O´OÀfÑ4LÑLˆÝŒ{˜<¨°6Ñ:Ô:Ð:r,   )NNr   Nr5   ),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úunit_intervalÚrealr   ÚsupportÚ_mean_carrier_measureÚhas_rsampler   r   r   r   ÚtupleÚfloatÚboolr&   r0   r8   r?   rC   rV   ÚpropertyrY   r]   r\   r
   r   r   r!   r"   re   rr   r   rt   rz   r~   rm   rƒ   r…   rŒ   Ú__classcell__)r*   s   @r+   r   r      s  ø€ € € € € ðð ð4 !,Ô 9À[ÔEUÐVÐV€OØÔ'€GØÐØ€Kð 26Ø26Ø$2Ø(,ðCð Cà˜˜f f˜nÔ-Ô.ðCð ˜˜v v˜~Ô.Ô/ðCð �E˜5�LÔ!ð	Cð
   ”~ðCð 
ðCð Cð Cð Cð Cð Cð@ð ð ð ð ð ð0ð 0ð 0ð
ð 
ð 
ð

ð 
ð 
ðNð Nð Nð( ðI�fð Ið Ið Iñ „XðIð ð)˜ð )ð )ð )ñ „Xð)ð ðJ˜&ð Jð Jð Jñ „XðJð ð;˜ð ;ð ;ð ;ñ „]ð;ð ðI�vð Ið Ið Iñ „]ðIð ð"˜UœZð "ð "ð "ñ „Xð"ð #- %¤*¡,¤,ð  ð  ð  ð  ð -7¨E¬J©L¬Lð ð  Eð ¸Vð ð ð ð ð

ð 
ð 
ð
ð 
ð 
ð 

ð 

ð 

ð
ð 
ð 
ð ð  v¤ð ð ð ñ „Xðð;ð ;ð ;ð ;ð ;ð ;ð ;r,   )rO   Útypingr   r   r!   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   r	   r
   r   r   Útorch.nn.functionalr   Útorch.typesr   r   r   Ú__all__r   © r,   r+   ú<module>r£      s'  ðà €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð !Ð
!€ð^;ð ^;ð ^;ð ^;ð ^;Ð+ñ ^;ô ^;ð ^;ð ^;ð ^;r,   