
    Αi                        S SK Jr  S SKrS SKJr  S SKrS SKJrJr  \(       a  S SK	J
r
  S SKJr   " S S\R                  5      rg)	    )annotationsN)TYPE_CHECKING)	dirichletexponential_family)Sequence)Tensorc                     ^  \ rS rSr% SrS\S'   S\S'   SU 4S jjr\SS j5       r\SS j5       r	SS	 jr
SS
 jr/ 4SS jjrSS jr\SS j5       rSS jrSrU =r$ )Beta   aH	  
Beta distribution parameterized by alpha and beta.

In probability theory and statistics, the beta distribution is a family of
continuous probability distributions defined on the interval [0, 1]
parameterized by two positive shape parameters, denoted by alpha and beta,
that appear as exponents of the random variable and control the shape of
the distribution. The generalization to multiple variables is called a
Dirichlet distribution.

The probability density function (pdf) is

.. math::

    f(x; \alpha, \beta) = \frac{1}{B(\alpha, \beta)}x^{\alpha-1}(1-x)^{\beta-1}

where the normalization, B, is the beta function,

.. math::

    B(\alpha, \beta) = \int_{0}^{1} t^{\alpha - 1} (1-t)^{\beta - 1}\mathrm{d}t


Args:
    alpha (float|Tensor): Alpha parameter. It supports broadcast semantics.
        The value of alpha must be positive. When the parameter is a tensor,
        it represents multiple independent distribution with
        a batch_shape(refer to ``Distribution`` ).
    beta (float|Tensor): Beta parameter. It supports broadcast semantics.
        The value of beta must be positive(>0). When the parameter is tensor,
        it represent multiple independent distribution with
        a batch_shape(refer to ``Distribution`` ).

Examples:

    .. code-block:: python

        >>> import paddle

        >>> # scale input
        >>> beta = paddle.distribution.Beta(alpha=0.5, beta=0.5)
        >>> print(beta.mean)
        Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
        0.50000000)

        >>> print(beta.variance)
        Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
        0.12500000)

        >>> print(beta.entropy())
        Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
        -0.24156499)

        >>> # tensor input with broadcast
        >>> beta = paddle.distribution.Beta(alpha=paddle.to_tensor([0.2, 0.4]), beta=0.6)
        >>> print(beta.mean)
        Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
        [0.25000000, 0.40000001])

        >>> print(beta.variance)
        Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
        [0.10416666, 0.12000000])

        >>> print(beta.entropy())
        Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
        [-1.91923141, -0.38095081])
r   alphabetac                  > [        U[        R                  5      (       a  [        R                  " / US9n[        U[        R                  5      (       a  [        R                  " / US9n[        R
                  " X/5      u  U l        U l        [        R                  " [        R                  " U R                  U R                  /S5      5      U l        [        TU ]5  U R                  R                  5        g )N)shape
fill_value)
isinstancenumbersRealpaddlefullbroadcast_tensorsr   r   r   	Dirichletstack
_dirichletsuper__init___batch_shape)selfr   r   	__class__s      X/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distribution/beta.pyr   Beta.__init__d   s    eW\\**KKbU;EdGLL));;RD9D & 8 8% G
DI#--LL$**dii0"5
 	556    c                N    U R                   U R                   U R                  -   -  $ )zMean of beta distribution.r   r   r   s    r    mean	Beta.means   s      zzTZZ$))344r"   c                    U R                   U R                  -   nU R                   U R                  -  UR                  S5      US-   -  -  $ )zVariance of beat distribution      )r   r   pow)r   sums     r    varianceBeta.variancex   s?     jj499$zzDII%sQw)?@@r"   c                L    [         R                  " U R                  U5      5      $ )zProbability density function evaluated at value

Args:
    value (Tensor): Value to be evaluated.

Returns:
    Tensor: Probability.
)r   explog_probr   values     r    prob	Beta.prob~   s     zz$--.//r"   c                l    U R                   R                  [        R                  " USU-
  /S5      5      $ )zLog probability density function evaluated at value

Args:
    value (Tensor): Value to be evaluated

Returns:
    Tensor: Log probability.
g      ?r   )r   r1   r   r   r2   s     r    r1   Beta.log_prob   s-     ''eS5[5I2(NOOr"   c                    [        U[        5      (       a  UO
[        U5      n[        R                  " U R                  R                  U5      S   SS9$ )zSample from beta distribution with sample shape.

Args:
    shape (Sequence[int], optional): Sample shape.

Returns:
    Tensor, Sampled data with shape `sample_shape` + `batch_shape` + `event_shape`.
).r   r   )axis)r   tupler   squeezer   sample)r   r   s     r    r<   Beta.sample   s@     $E511uU|~~doo44U;FC"MMr"   c                6    U R                   R                  5       $ )zAEntropy of dirichlet distribution

Returns:
    Tensor: Entropy.
)r   entropyr%   s    r    r?   Beta.entropy   s     &&((r"   c                2    U R                   U R                  4$ Nr$   r%   s    r    _natural_parametersBeta._natural_parameters   s    

DII&&r"   c                    [         R                  " U5      [         R                  " U5      -   [         R                  " X-   5      -
  $ rB   )r   lgamma)r   xys      r    _log_normalizerBeta._log_normalizer   s/    }}Q&--"22V]]155IIIr"   )r   r   r   )r   float | Tensorr   rK   returnNone)rL   r   )r3   r   rL   r   )r   zSequence[int]rL   r   )rL   ztuple[Tensor, Tensor])rG   r   rH   r   rL   r   )__name__
__module____qualname____firstlineno____doc____annotations__r   propertyr&   r-   r4   r1   r<   r?   rC   rI   __static_attributes____classcell__)r   s   @r    r
   r
      s    BH M
L7 5 5 A A
	0	P -/ 
N) ' 'J Jr"   r
   )
__future__r   r   typingr   r   paddle.distributionr   r   collections.abcr   r   ExponentialFamilyr
    r"   r    <module>r]      s6    #     =(QJ// QJr"   