
    9i                         S SK JrJr  S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr  S	/r " S
 S	\
5      rg)    )OptionalUnionN)Tensor)constraints)	Dirichlet)ExponentialFamily)broadcast_all)_Number_sizeBetac            	         ^  \ rS rSrSr\R                  \R                  S.r\R                  r	Sr
 SS\\\4   S\\\4   S\\   S	S4U 4S
 jjjrSU 4S jjr\S	\4S j5       r\S	\4S j5       r\S	\4S j5       rSS\S	\4S jjrS rS r\S	\4S j5       r\S	\4S j5       r\S	\\\4   4S j5       rS rSrU =r $ )r      aB  
Beta distribution parameterized by :attr:`concentration1` and :attr:`concentration0`.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = Beta(torch.tensor([0.5]), torch.tensor([0.5]))
    >>> m.sample()  # Beta distributed with concentration concentration1 and concentration0
    tensor([ 0.1046])

Args:
    concentration1 (float or Tensor): 1st concentration parameter of the distribution
        (often referred to as alpha)
    concentration0 (float or Tensor): 2nd concentration parameter of the distribution
        (often referred to as beta)
concentration1concentration0TNr   r   validate_argsreturnc                 Z  > [        U[        5      (       a@  [        U[        5      (       a+  [        R                  " [	        U5      [	        U5      /5      nO%[        X5      u  p[        R                  " X/S5      n[        XCS9U l        [        TU ])  U R                  R                  US9  g )Nr   )
isinstancer
   torchtensorfloatr	   stackr   
_dirichletsuper__init___batch_shape)selfr   r   r   concentration1_concentration0	__class__s        X/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/distributions/beta.pyr   Beta.__init__)   s     ng..:ng3V3V,1LL~&n(=>-) .;.*N -2KK0"-) $)
 	55]S    c                    > U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        [        [        U]  USS9  U R                  Ul        U$ )NFr   )	_get_checked_instancer   r   Sizer   expandr   r   _validate_args)r    batch_shape	_instancenewr"   s       r#   r)   Beta.expand?   s`    ((y9jj-//<dC!+U!C!00
r%   c                 N    U R                   U R                   U R                  -   -  $ Nr   r    s    r#   mean	Beta.meanG   s$    ""d&9&9D<O<O&OPPr%   c                 4    U R                   R                  S   $ N).r   )r   moder1   s    r#   r6   	Beta.modeK   s    ##F++r%   c                     U R                   U R                  -   nU R                   U R                  -  UR                  S5      US-   -  -  $ )N      )r   r   pow)r    totals     r#   varianceBeta.varianceO   sF    ##d&9&99""T%8%88EIIaLETUI<VWWr%   sample_shapec                 X    U R                   R                  U5      R                  SS5      $ )Nr   r   )r   rsampleselect)r    r?   s     r#   rA   Beta.rsampleT   s$    &&|4;;BBBr%   c                     U R                   (       a  U R                  U5        [        R                  " USU-
  /S5      nU R                  R                  U5      $ )Ng      ?r   )r*   _validate_sampler   r   r   log_prob)r    valueheads_tailss      r#   rF   Beta.log_probW   sG    !!%(kk5#+"6;''44r%   c                 6    U R                   R                  5       $ r0   )r   entropyr1   s    r#   rK   Beta.entropy]   s    &&((r%   c                     U R                   R                  S   n[        U[        5      (       a  [        R
                  " U/5      $ U$ r5   r   concentrationr   r
   r   r   r    results     r#   r   Beta.concentration1`   9    ..v6fg&&<<))Mr%   c                     U R                   R                  S   n[        U[        5      (       a  [        R
                  " U/5      $ U$ )N).r:   rN   rP   s     r#   r   Beta.concentration0h   rS   r%   c                 2    U R                   U R                  4$ r0   r   r1   s    r#   _natural_paramsBeta._natural_paramsp   s    ##T%8%899r%   c                     [         R                  " U5      [         R                  " U5      -   [         R                  " X-   5      -
  $ r0   )r   lgamma)r    xys      r#   _log_normalizerBeta._log_normalizert   s-    ||Aa05<<3FFFr%   )r   r0   ) )!__name__
__module____qualname____firstlineno____doc__r   positivearg_constraintsunit_intervalsupporthas_rsampler   r   r   r   boolr   r)   propertyr2   r6   r=   r   rA   rF   rK   r   r   tuplerW   r]   __static_attributes____classcell__)r"   s   @r#   r   r      sh   $ &..%..O ''GK )-	Tfem,T fem,T  ~	T
 
T T, Qf Q Q ,f , , X& X XCE C6 C5)       :vv~!6 : :G Gr%   )typingr   r   r   r   torch.distributionsr   torch.distributions.dirichletr   torch.distributions.exp_familyr   torch.distributions.utilsr	   torch.typesr
   r   __all__r   r_   r%   r#   <module>rv      s7    "   + 3 < 3 & (eG eGr%   