+
    –°³jé  ã                   ó®   € ^ RI t ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHtHtHt ^ RIHtHtHt R	R
.t ! R R	]4      t ! R R
]4      tR# )é    N©ÚTensor)Úconstraints)ÚDistribution)ÚTransformedDistribution)ÚSigmoidTransform)Úbroadcast_allÚclamp_probsÚlazy_propertyÚlogits_to_probsÚprobs_to_logits)Ú_NumberÚ_sizeÚNumberÚLogitRelaxedBernoulliÚRelaxedBernoullic                   ó8  a a€ ] tR t^t oRtR]P                  R]P                  /t]P                  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]P&                  ! 4       3V3R lR lltR tRtVtV ;t# )r   aO  
Creates a LogitRelaxedBernoulli distribution parameterized by :attr:`probs`
or :attr:`logits` (but not both), which is the logit of a RelaxedBernoulli
distribution.

Samples are logits of values in (0, 1). See [1] for more details.

Args:
    temperature (Tensor): relaxation temperature
    probs (Number, Tensor): the probability of sampling `1`
    logits (Number, Tensor): the log-odds of sampling `1`

[1] The Concrete Distribution: A Continuous Relaxation of Discrete Random
Variables (Maddison et al., 2017)

[2] Categorical Reparametrization with Gumbel-Softmax
(Jang et al., 2017)
ÚprobsÚlogitsc          
      ó€   <€ V ^8„  d   QhRS[ RS[ S[,          R,          RS[ S[,          R,          RS[R,          RR/# ©é   Útemperaturer   Nr   Úvalidate_argsÚreturn©r   r   Úbool)ÚformatÚ__classdict__s   "€Úf/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributions/relaxed_bernoulli.pyÚ__annotate__Ú"LogitRelaxedBernoulli.__annotate__.   sZ   ø€ ÷ Cñ CáðCñ ™� Õ%ðCñ ™• $Õ&ð	Cñ
 ˜d•{ðCð 
ñCó    c                óÂ  <€ Wn         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 `5  WdR7       R # )Nz;Either `probs` or `logits` must be specified, but not both.zlogits is unexpectedly None©r   )r   Ú
ValueErrorÚ
isinstancer   r	   r   ÚAssertionErrorr   Ú_paramÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   r   Ú	is_scalarÚbatch_shapeÚ	__class__s   &&&&&  €r    r.   ÚLogitRelaxedBernoulli.__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V P                  Vn        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+   r   Ú__dict__r   Úexpandr)   r   r-   r.   Ú_validate_args©r/   r1   Ú	_instanceÚnewr2   s   &&& €r    r7   ÚLogitRelaxedBernoulli.expandK   s³   ø€ Ø×(Ñ(Ô)>À	ÓJˆÜ—j’j Ó-ˆØ×*Ñ*ˆŒØ�d—m‘mÔ#ØŸ
™
×)Ñ)¨+Ó6ˆCŒIØŸ™ˆCŒJØ�t—}‘}Ô$ØŸ™×+Ñ+¨KÓ8ˆCŒJØŸ™ˆCŒJÜÔ# SÑ2°;ÈeÐ2ÔTØ!×0Ñ0ˆÔØˆ
r#   c                ó:   € V P                   P                  ! V/ VB # ©N)r)   r;   )r/   ÚargsÚkwargss   &*,r    Ú_newÚLogitRelaxedBernoulli._newY   s   € Ø�{‰{�Š Ð/¨Ñ/Ð/r#   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r   r   s   "€r    r!   r"   ]   s   ø€ ÷ ;ñ ;™ñ ;r#   c                ó0   € \        V P                  R R7      # ©T)Ú	is_binary)r   r   ©r/   s   &r    r   ÚLogitRelaxedBernoulli.logits\   s   € ä˜tŸz™z°TÔ:Ð:r#   c                ó    <€ V ^8„  d   QhRS[ /# rD   r   )r   r   s   "€r    r!   r"   a   s   ø€ ÷ <ñ <‘vñ <r#   c                ó0   € \        V P                  R R7      # rF   )r   r   rH   s   &r    r   ÚLogitRelaxedBernoulli.probs`   s   € ä˜tŸ{™{°dÔ;Ð;r#   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rD   )r*   r+   )r   r   s   "€r    r!   r"   e   s   ø€ ÷ "ñ "™UŸZ™Zñ "r#   c                ó6   € V P                   P                  4       # r>   )r)   r,   rH   s   &r    Úparam_shapeÚ!LogitRelaxedBernoulli.param_shaped   s   € à�{‰{×ÑÓ!Ð!r#   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úsample_shaper   )r   r   )r   r   s   "€r    r!   r"   h   s   ø€ ÷ ñ ¡Eð ¹Vñ r#   c                óš  € V P                  V4      p\        V P                  P                  V4      4      p\        \        P
                  ! W#P                  VP                  R 7      4      pVP                  4       V) P                  4       ,
          VP                  4       ,           V) P                  4       ,
          V P                  ,          # ))ÚdtypeÚdevice)Ú_extended_shaper
   r   r7   r*   ÚrandrT   rU   ÚlogÚlog1pr   )r/   rR   Úshaper   Úuniformss   &&   r    ÚrsampleÚLogitRelaxedBernoulli.rsampleh   s’   € Ø×$Ñ$ \Ó2ˆÜ˜DŸJ™J×-Ñ-¨eÓ4Ó5ˆÜÜ�JŠJ�u§K¡K¸¿¹ÔEó
ˆð �L‰L‹N˜x˜i×.Ñ.Ó0Õ0°5·9±9³;Õ>À5À&ÇÁÓAQÕQØ×Ñõð 	r#   c                óP  € V P                   '       d   V P                  V4       \        V P                  V4      w  r!W!P	                  V P
                  4      ,
          pV P
                  P                  4       V,           ^VP                  4       P                  4       ,          ,
          # )r   )	r8   Ú_validate_sampler	   r   Úmulr   rX   ÚexprY   )r/   Úvaluer   Údiffs   &&  r    Úlog_probÚLogitRelaxedBernoulli.log_probr   sx   € Ø××ÐØ×!Ñ! %Ô(Ü% d§k¡k°5Ó9‰ˆØŸ	™	 $×"2Ñ"2Ó3Õ3ˆØ×Ñ×#Ñ#Ó%¨Õ,¨q°4·8±8³:×3CÑ3CÓ3EÕ/EÕEÐEr#   )r)   r   r   r   ©NNNr>   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úunit_intervalÚrealÚarg_constraintsÚsupportr.   r7   rA   r   r   r   ÚpropertyrO   r*   r+   r\   rd   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r2   r   s   @@r    r   r      s¤   ù‡ € ñð(  × 9Ñ 9¸8À[×EUÑEUÐV€OØ×Ñ€G÷Cõ C÷:ò0ð ÷;ó ð;ð ÷<ó ð<ð ÷"ó ð"ð -2¯JªJ«L÷ ò ÷Fò Fr#   c                   ó  a a€ ] tR t^zt oRtR]P                  R]P                  /t]P                  t	Rt
RV3R lV 3R llltRV 3R ll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tRtVtV ;t# )r   a¬  
Creates a RelaxedBernoulli distribution, parametrized by
:attr:`temperature`, and either :attr:`probs` or :attr:`logits`
(but not both). This is a relaxed version of the `Bernoulli` distribution,
so the values are in (0, 1), and has reparametrizable samples.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = RelaxedBernoulli(torch.tensor([2.2]),
    ...                      torch.tensor([0.1, 0.2, 0.3, 0.99]))
    >>> m.sample()
    tensor([ 0.2951,  0.3442,  0.8918,  0.9021])

Args:
    temperature (Tensor): relaxation temperature
    probs (Number, Tensor): the probability of sampling `1`
    logits (Number, Tensor): the log-odds of sampling `1`
r   r   Tc          
      ó€   <€ V ^8„  d   QhRS[ RS[ S[,          R,          RS[ S[,          R,          RS[R,          RR/# r   r   )r   r   s   "€r    r!   ÚRelaxedBernoulli.__annotate__–   sZ   ø€ ÷ Uñ UáðUñ ™� Õ%ðUñ ™• $Õ&ð	Uñ
 ˜d•{ðUð 
ñUr#   c                óT   <€ \        WV4      p\        SV `	  V\        4       VR 7       R# )r%   N)r   r-   r.   r   )r/   r   r   r   r   Ú	base_distr2   s   &&&&& €r    r.   ÚRelaxedBernoulli.__init__–   s)   ø€ ô *¨+¸fÓEˆ	Ü‰Ñ˜Ô$4Ó$6ÀmÐÖTr#   c                óP   <€ V P                  \        V4      p\        SV `  WR 7      # ))r:   )r5   r   r-   r7   r9   s   &&& €r    r7   ÚRelaxedBernoulli.expand    s'   ø€ Ø×(Ñ(Ô)9¸9ÓEˆÜ‰w‰~˜kˆ~Ó9Ð9r#   c                ó    <€ V ^8„  d   QhRS[ /# rD   r   )r   r   s   "€r    r!   rw   ¥   s   ø€ ÷ *ñ *™Vñ *r#   c                ó.   € V P                   P                  # r>   )ry   r   rH   s   &r    r   ÚRelaxedBernoulli.temperature¤   s   € à�~‰~×)Ñ)Ð)r#   c                ó    <€ V ^8„  d   QhRS[ /# rD   r   )r   r   s   "€r    r!   rw   ©   s   ø€ ÷ %ñ %™ñ %r#   c                ó.   € V P                   P                  # r>   )ry   r   rH   s   &r    r   ÚRelaxedBernoulli.logits¨   s   € à�~‰~×$Ñ$Ð$r#   c                ó    <€ V ^8„  d   QhRS[ /# rD   r   )r   r   s   "€r    r!   rw   ­   s   ø€ ÷ $ñ $‘vñ $r#   c                ó.   € V P                   P                  # r>   )ry   r   rH   s   &r    r   ÚRelaxedBernoulli.probs¬   s   € à�~‰~×#Ñ#Ð#r#   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   ry   )r   )r   r   s   "€r    r!   rw   z   s   ø‡ ‚ ñ4 %Ñ$ò5 r#   © rf   r>   )rg   rh   ri   rj   rk   r   rl   rm   rn   ro   Úhas_rsampler.   r7   rp   r   r   r   Ú__annotate_func__rq   rr   rs   rt   s   @@r    r   r   z   s‹   ù‡ € ñð(  × 9Ñ 9¸8À[×EUÑEUÐV€Oà×'Ñ'€GØ€K÷Uõ U÷:ð ÷*ó ð*ð ÷%ó ð%ð ÷$ó ð$÷g … r#   )r*   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Ú,torch.distributions.transformed_distributionr   Útorch.distributions.transformsr   Útorch.distributions.utilsr	   r
   r   r   r   Útorch.typesr   r   r   Ú__all__r   r   r‡   r#   r    Ú<module>r‘      sV   ðó Ý Ý +Ý 9Ý PÝ ;÷õ ÷ /Ñ .ð #Ð$6Ð
7€ôaF˜Lô aFôH4$Ð.ö 4$r#   