§
    ŠŠtj   ã                   ó|   — d dl Z d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ dgZ G d	„ de¦  «        ZdS )
é    N)ÚTensor)Úconstraints)Ú	Dirichlet)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚBetac            	       ób  ‡ — e Zd ZdZej        ej        dœZej        ZdZ		 dde
ez  de
ez  dedz  ddfˆ fd	„Zdˆ fd
„	Zede
fd„¦   «         Zede
fd„¦   «         Zede
fd„¦   «         Zddede
fd„Zd„ Zd„ Zede
fd„¦   «         Zede
fd„¦   «         Zedee
e
f         fd„¦   «         Zd„ Zˆ xZS )r
   ar  
    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                 ó˜  •— t          |t          ¦  «        rFt          |t          ¦  «        r1t          j        t	          |¦  «        t	          |¦  «        g¦  «        }n*t          ||¦  «        \  }}t          j        ||gd¦  «        }t          ||¬¦  «        | _        t          ¦   «          
                    | j        j        |¬¦  «         d S )Néÿÿÿÿ©r   )Ú
isinstancer   ÚtorchÚtensorÚfloatr   Ústackr   Ú
_dirichletÚsuperÚ__init__Ú_batch_shape)Úselfr   r   r   Úconcentration1_concentration0Ú	__class__s        €úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/beta.pyr   zBeta.__init__)   sÕ   ø€ õ �n¥gÑ.Ô.ð 
	µ:¸nÍgÑ3VÔ3Vð 
	Ý,1¬LÝ�~Ñ&Ô&­¨nÑ(=Ô(=Ð>ñ-ô -Ð)Ð)õ .;Ø ñ.ô .Ñ*ˆN˜Nõ -2¬KØ Ð0°"ñ-ô -Ð)õ $Ø)¸ð
ñ 
ô 
ˆŒõ 	‰Œ×Ò˜œÔ5À]ÐÑSÔSÐSÐSÐSó    c                 ó  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        t          t          |¦  «                             |d¬¦  «         | j        |_        |S )NFr   )	Ú_get_checked_instancer
   r   ÚSizer   Úexpandr   r   Ú_validate_args)r   Úbatch_shapeÚ	_instanceÚnewr   s       €r    r%   zBeta.expand?   sq   ø€ Ø×(Ò(­¨yÑ9Ô9ˆÝ”j Ñ-Ô-ˆØœ×/Ò/°Ñ<Ô<ˆŒÝ�d�CÑÔ×!Ò! +¸UÐ!ÑCÔCÐCØ!Ô0ˆÔØˆ
r!   c                 ó0   — | j         | j         | j        z   z  S ©Nr   ©r   s    r    Úmeanz	Beta.meanG   s   € àÔ" dÔ&9¸DÔ<OÑ&OÑPÐPr!   c                 ó&   — | j         j        d         S ©N).r   )r   Úmoder,   s    r    r0   z	Beta.modeK   s   € àŒÔ# FÔ+Ð+r!   c                 óv   — | j         | j        z   }| j         | j        z  |                     d¦  «        |dz   z  z  S )Né   é   )r   r   Úpow)r   Útotals     r    ÚvariancezBeta.varianceO   s<   € àÔ# dÔ&9Ñ9ˆØÔ" TÔ%8Ñ8¸E¿IºIÀa¹L¼LÈEÐTUÉIÑ<VÑWÐWr!   © Úsample_shapec                 ó^   — | j                              |¦  «                             dd¦  «        S )Nr   r   )r   ÚrsampleÚselect)r   r8   s     r    r:   zBeta.rsampleT   s(   € ØŒ×&Ò& |Ñ4Ô4×;Ò;¸BÀÑBÔBÐBr!   c                 ó¢   — | j         r|                      |¦  «         t          j        |d|z
  gd¦  «        }| j                             |¦  «        S )Ng      ð?r   )r&   Ú_validate_sampler   r   r   Úlog_prob)r   ÚvalueÚheads_tailss      r    r>   zBeta.log_probW   sQ   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ý”k 5¨#°©+Ð"6¸Ñ;Ô;ˆØŒ×'Ò'¨Ñ4Ô4Ð4r!   c                 ó4   — | j                              ¦   «         S r+   )r   Úentropyr,   s    r    rB   zBeta.entropy]   s   € ØŒ×&Ò&Ñ(Ô(Ð(r!   c                 ó~   — | j         j        d         }t          |t          ¦  «        rt	          j        |g¦  «        S |S r/   ©r   Úconcentrationr   r   r   r   ©r   Úresults     r    r   zBeta.concentration1`   ó:   € à”Ô.¨vÔ6ˆÝ�f�gÑ&Ô&ð 	Ý”<  Ñ)Ô)Ð)àˆMr!   c                 ó~   — | j         j        d         }t          |t          ¦  «        rt	          j        |g¦  «        S |S )N).r3   rD   rF   s     r    r   zBeta.concentration0h   rH   r!   c                 ó   — | j         | j        fS r+   r   r,   s    r    Ú_natural_paramszBeta._natural_paramsp   s   € àÔ# TÔ%8Ð9Ð9r!   c                 ó„   — t          j        |¦  «        t          j        |¦  «        z   t          j        ||z   ¦  «        z
  S r+   )r   Úlgamma)r   ÚxÚys      r    Ú_log_normalizerzBeta._log_normalizeru   s0   € ÝŒ|˜A‰Œ¥¤¨a¡¤Ñ0µ5´<ÀÀAÁÑ3FÔ3FÑFÐFr!   r+   )r7   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler   r   Úboolr   r%   Úpropertyr-   r0   r6   r	   r:   r>   rB   r   r   ÚtuplerK   rP   Ú__classcell__)r   s   @r    r
   r
      s4  ø€ € € € € ðð ð& &Ô.Ø%Ô.ðð €Oð Ô'€GØ€Kð &*ð	Tð Tà ™ðTð  ™ðTð ˜d‘{ð	Tð
 
ðTð Tð Tð Tð Tð Tð,ð ð ð ð ð ð ðQ�fð Qð Qð Qñ „XðQð ð,�fð ,ð ,ð ,ñ „Xð,ð ðX˜&ð Xð Xð Xñ „XðXðCð C Eð C°6ð Cð Cð Cð Cð5ð 5ð 5ð)ð )ð )ð ð ð ð ð ñ „Xðð ð ð ð ð ñ „Xðð ð:  v¨v ~Ô!6ð :ð :ð :ñ „Xð:ðGð Gð Gð Gð Gð Gð Gr!   )r   r   Útorch.distributionsr   Útorch.distributions.dirichletr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r	   Ú__all__r
   r7   r!   r    ú<module>rd      sÔ   ðð €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ(€ðgGð gGð gGð gGð gGÐñ gGô gGð gGð gGð gGr!   