+
    –°³jš  ã                   ó†   € ^ RI t ^ RI HtHt ^ RIHt ^ RIHt ^ RIHtH	t	H
t
Ht ^ RIHt ^ RIHtHt R.t ! R	 R]4      tR# )
é    N)ÚnanÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_allÚlazy_propertyÚlogits_to_probsÚprobs_to_logits)Ú binary_cross_entropy_with_logits)Ú_NumberÚNumberÚ	Bernoullic                   óº  a a€ ] tR t^t oRtR]P                  R]P                  /t]P                  t
Rt^ tRV3R lV 3R llltRV 3R lltR t]V3R	 lR
 l4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]P2                  ! 4       3R ltR tR tRR lt]V3R lR l4       tR tRt Vt!V ;t"# ) r   aP  
Creates a Bernoulli distribution parameterized by :attr:`probs`
or :attr:`logits` (but not both).

Samples are binary (0 or 1). They take the value `1` with probability `p`
and `0` with probability `1 - p`.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = Bernoulli(torch.tensor([0.3]))
    >>> m.sample()  # 30% chance 1; 70% chance 0
    tensor([ 0.])

Args:
    probs (Number, Tensor): the probability of sampling `1`
    logits (Number, Tensor): the log-odds of sampling `1`
    validate_args (bool, optional): whether to validate arguments, None by default
ÚprobsÚlogitsTc                óz   <€ V ^8„  d   QhRS[ S[,          R,          RS[ S[,          R,          RS[R,          RR/# )é   r   Nr   Úvalidate_argsÚreturn)r   r   Úbool)ÚformatÚ__classdict__s   "€Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributions/bernoulli.pyÚ__annotate__ÚBernoulli.__annotate__/   sO   ø€ ÷ Cñ Cá™� Õ%ðCñ ™• $Õ&ðCñ ˜d•{ð	Cð
 
ñCó    c                ó¶  <€ VR J VR J 8X  d   \        R4      hVe$   \        V\        4      p\        V4      w  V n        M1Vf   \        R4      h\        V\        4      p\        V4      w  V n        Ve   V P                  MV P                  V n        V'       d   \        P                  ! 4       pMV P                  P                  4       p\        SV `1  WSR7       R # )Nz;Either `probs` or `logits` must be specified, but not both.zlogits is unexpectedly None©r   )Ú
ValueErrorÚ
isinstancer   r   r   ÚAssertionErrorr   Ú_paramÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   Ú	is_scalarÚbatch_shapeÚ	__class__s   &&&&  €r   r'   ÚBernoulli.__init__/   s¸   ø€ ð �TˆM˜v¨˜~Ô.ÜØMóð ð ÒÜ" 5¬'Ó2ˆIä)¨%Ó0‰MˆT�ZàŠ~Ü$Ð%BÓCÐCÜ" 6¬7Ó3ˆIä*¨6Ó2‰NˆTŒ[Ø$)Ò$5�d—j’j¸4¿;¹;ˆŒßÜŸ*š*›,‰KàŸ+™+×*Ñ*Ó,ˆKÜ‰Ñ˜ÐÖBr   c                ó´  <€ V P                  \        V4      p\        P                  ! V4      pR V P                  9   d2   V P
                  P                  V4      Vn        VP
                  Vn        RV P                  9   d2   V P                  P                  V4      Vn        VP                  Vn        \        \        V`+  VRR7       V P                  Vn        V# )r   r   Fr   )Ú_get_checked_instancer   r#   r$   Ú__dict__r   Úexpandr"   r   r&   r'   Ú_validate_args)r(   r*   Ú	_instanceÚnewr+   s   &&& €r   r0   ÚBernoulli.expandJ   s¤   ø€ Ø×(Ñ(¬°IÓ>ˆÜ—j’j Ó-ˆØ�d—m‘mÔ#ØŸ
™
×)Ñ)¨+Ó6ˆCŒIØŸ™ˆCŒJØ�t—}‘}Ô$ØŸ™×+Ñ+¨KÓ8ˆCŒJØŸ™ˆCŒJÜŒi˜Ñ& {À%Ð&ÔHØ!×0Ñ0ˆÔØˆ
r   c                ó:   € V P                   P                  ! V/ VB # ©N)r"   r3   )r(   ÚargsÚkwargss   &*,r   Ú_newÚBernoulli._newW   s   € Ø�{‰{�Š Ð/¨Ñ/Ð/r   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r   r   s   "€r   r   r   [   s   ø€ ÷ ñ ‘fñ r   c                ó   € V P                   # r6   ©r   ©r(   s   &r   ÚmeanÚBernoulli.meanZ   s   € à�z‰zÐr   c                ó    <€ V ^8„  d   QhRS[ /# r<   r=   )r   r   s   "€r   r   r   _   s   ø€ ÷ ñ ‘fñ r   c                ó€   € V P                   R 8¬  P                  V P                   4      p\        WP                   R 8H  &   V# )g      à?)r   Útor   )r(   Úmodes   & r   rF   ÚBernoulli.mode^   s5   € à—
‘
˜cÑ!×%Ñ% d§j¡jÓ1ˆÜ"%ˆ�Z‰Z˜3ÑÑØˆr   c                ó    <€ V ^8„  d   QhRS[ /# r<   r=   )r   r   s   "€r   r   r   e   s   ø€ ÷ -ñ -™&ñ -r   c                óJ   € V P                   ^V P                   ,
          ,          # ©é   r?   r@   s   &r   ÚvarianceÚBernoulli.varianced   s   € à�z‰z˜Q §¡�^Õ,Ð,r   c                ó    <€ V ^8„  d   QhRS[ /# r<   r=   )r   r   s   "€r   r   r   i   s   ø€ ÷ ;ñ ;™ñ ;r   c                ó0   € \        V P                  R R7      # ©T)Ú	is_binary)r
   r   r@   s   &r   r   ÚBernoulli.logitsh   s   € ä˜tŸz™z°TÔ:Ð:r   c                ó    <€ V ^8„  d   QhRS[ /# r<   r=   )r   r   s   "€r   r   r   m   s   ø€ ÷ <ñ <‘vñ <r   c                ó0   € \        V P                  R R7      # rP   )r	   r   r@   s   &r   r   ÚBernoulli.probsl   s   € ä˜tŸ{™{°dÔ;Ð;r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r<   )r#   r$   )r   r   s   "€r   r   r   q   s   ø€ ÷ "ñ "™UŸZ™Zñ "r   c                ó6   € V P                   P                  4       # r6   )r"   r%   r@   s   &r   Úparam_shapeÚBernoulli.param_shapep   s   € à�{‰{×ÑÓ!Ð!r   c                óú   € V P                  V4      p\        P                  ! 4       ;_uu_ 4        \        P                  ! V P                  P                  V4      4      uuR R R 4       #   + '       g   i     R # ; ir6   )Ú_extended_shaper#   Úno_gradÚ	bernoullir   r0   )r(   Úsample_shapeÚshapes   && r   ÚsampleÚBernoulli.samplet   sD   € Ø×$Ñ$ \Ó2ˆÜ�]Š]�_�_Ü—?’? 4§:¡:×#4Ñ#4°UÓ#;Ó<÷ �_�_‹_ús   ¯/A)Á)A:	c                ó”   € V P                   '       d   V P                  V4       \        V P                  V4      w  r!\	        W!R R7      ) # ©Únone)Ú	reduction)r1   Ú_validate_sampler   r   r   )r(   Úvaluer   s   && r   Úlog_probÚBernoulli.log_proby   s>   € Ø××ÐØ×!Ñ! %Ô(Ü% d§k¡k°5Ó9‰ˆÜ0°È&ÔQÐQÐQr   c                óF   € \        V P                  V P                  R R7      # rc   )r   r   r   r@   s   &r   ÚentropyÚBernoulli.entropy   s   € Ü/Ø�K‰K˜Ÿ™¨vô
ð 	
r   c                ó@  € \         P                  ! ^V P                  P                  V P                  P                  R7      pVP                  RR\        V P                  4      ,          ,           4      pV'       d#   VP                  RV P                  ,           4      pV# )r   )ÚdtypeÚdevice)éÿÿÿÿrJ   )	r#   Úaranger"   rn   ro   ÚviewÚlenÚ_batch_shaper0   )r(   r0   Úvaluess   && r   Úenumerate_supportÚBernoulli.enumerate_support„   sl   € Ü—’˜a t§{¡{×'8Ñ'8ÀÇÁ×ASÑASÔTˆØ—‘˜U T¬C°×0AÑ0AÓ,BÕ%BÕBÓCˆßØ—]‘] 5¨4×+<Ñ+<Õ#<Ó=ˆFØˆr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r<   )Útupler   )r   r   s   "€r   r   r   Œ   s   ø€ ÷ *ñ *¡¡v¥ñ *r   c                óD   € \         P                  ! V P                  4      3# r6   )r#   Úlogitr   r@   s   &r   Ú_natural_paramsÚBernoulli._natural_params‹   s   € ä—’˜DŸJ™JÓ'Ð)Ð)r   c                óV   € \         P                  ! \         P                  ! V4      4      # r6   )r#   Úlog1pÚexp)r(   Úxs   &&r   Ú_log_normalizerÚBernoulli._log_normalizer�   s   € Ü�{Š{œ5Ÿ9š9 Q›<Ó(Ð(r   )r"   r   r   )NNNr6   )T)#Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úunit_intervalÚrealÚarg_constraintsÚbooleanÚsupportÚhas_enumerate_supportÚ_mean_carrier_measurer'   r0   r9   ÚpropertyrA   rF   rL   r   r   r   rX   r#   r$   r`   rh   rk   rv   r|   r‚   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r+   r   s   @@r   r   r      s	  ù‡ € ñð*  × 9Ñ 9¸8À[×EUÑEUÐV€OØ×!Ñ!€GØ ÐØÐ÷Cõ C÷6ò0ð ÷ó ðð ÷ó ðð
 ÷-ó ð-ð ÷;ó ð;ð ÷<ó ð<ð ÷"ó ð"ð #(§*¢*£,ô =ò
Rò
ô
ð ÷*ó ð*÷)ò )r   )r#   r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   r   r	   r
   Útorch.nn.functionalr   Útorch.typesr   r   Ú__all__r   © r   r   Ú<module>r›      s>   ðó ß Ý +Ý <÷ó õ Aß 'ð ˆ-€ô})Ð!ö })r   