+
    &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   "u/Users/jameslopez/projects/CWCArchive/cwc-podcast/.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     TMv~.M  "5'2I)%0MTZ~$%BCC"673I*62NT[$)$5djj4;;**,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>jj-dmm#

))+6CICJt}}$++K8CJCJ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    zz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!%%djj1"%ZZ3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    zzQ^,,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    tzzT::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     " "UZZ "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#4U#;< ___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>    !!%(%dkk5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    /KK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    at{{'8'8ASASTUTC0A0A,B%BBC]]54+<+<#<=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    DJJ'))r   c                V    \         P                  ! \         P                  ! V4      4      # r6   )r#   log1pexp)r(   xs   &&r   _log_normalizerBernoulli._log_normalizer   s    {{599Q<((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 98[EUEUVO!!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   