§
    ŠŠtj3  ã                   óŠ   — d dl Z d dlmc 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mZmZ dgZ G d„ de	¦  «        ZdS )	é    N)ÚTensor)Úconstraints)ÚDistribution)ÚGamma)Úbroadcast_allÚlazy_propertyÚlogits_to_probsÚprobs_to_logitsÚNegativeBinomialc                   óÀ  ‡ — e Zd ZdZ ej        d¦  «         ej        dd¦  «        ej        dœZej	        Z
	 	 	 ddeez  dedz  d	edz  d
edz  ddf
ˆ fd„Zdˆ fd„	Zd„ Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedej        fd„¦   «         Zedefd„¦   «         Z ej        ¦   «         fd„Zd„ Zˆ xZS )r   ao  
    Creates a Negative Binomial distribution, i.e. distribution
    of the number of successful independent and identical Bernoulli trials
    before :attr:`total_count` failures are achieved. The probability
    of success of each Bernoulli trial is :attr:`probs`.

    Args:
        total_count (float or Tensor): non-negative number of negative Bernoulli
            trials to stop, although the distribution is still valid for real
            valued count
        probs (Tensor): Event probabilities of success in the half open interval [0, 1)
        logits (Tensor): Event log-odds for probabilities of success
    r   ç        ç      ð?)Útotal_countÚprobsÚlogitsNr   r   r   Úvalidate_argsÚreturnc                 ó  •— |d u |d u k    rt          d¦  «        ‚|�Bt          ||¦  «        \  | _        | _        | j                             | j        ¦  «        | _        nR|€t          d¦  «        ‚t          ||¦  «        \  | _        | _        | j                             | j        ¦  «        | _        |�| j        n| j        | _        | j                             ¦   «         }t          ¦   «          
                    ||¬¦  «         d S )Nz;Either `probs` or `logits` must be specified, but not both.zlogits is unexpectedly None©r   )Ú
ValueErrorr   r   r   Útype_asÚAssertionErrorr   Ú_paramÚsizeÚsuperÚ__init__)Úselfr   r   r   r   Úbatch_shapeÚ	__class__s         €úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/negative_binomial.pyr   zNegativeBinomial.__init__+   s
  ø€ ð �TˆM˜v¨˜~Ò.Ð.ÝØMñô ð ð Ðõ
 ˜k¨5Ñ1Ô1ñ	ØÔ à”
à#Ô/×7Ò7¸¼
ÑCÔCˆDÔÐàˆ~Ý$Ð%BÑCÔCÐCõ
 ˜k¨6Ñ2Ô2ñ	ØÔ à”à#Ô/×7Ò7¸¼ÑDÔDˆDÔà$)Ð$5�d”j�j¸4¼;ˆŒØ”k×&Ò&Ñ(Ô(ˆÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBó    c                 óà  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        d| j        v r+| j                             |¦  «        |_        |j        |_        d| j        v r+| j	                             |¦  «        |_	        |j	        |_        t          t          |¦  «                             |d¬¦  «         | j        |_        |S )Nr   r   Fr   )Ú_get_checked_instancer   ÚtorchÚSizer   ÚexpandÚ__dict__r   r   r   r   r   Ú_validate_args)r   r   Ú	_instanceÚnewr   s       €r    r&   zNegativeBinomial.expandK   sÎ   ø€ Ø×(Ò(Õ)9¸9ÑEÔEˆÝ”j Ñ-Ô-ˆØÔ*×1Ò1°+Ñ>Ô>ˆŒØ�d”mÐ#Ð#Øœ
×)Ò)¨+Ñ6Ô6ˆCŒIØœˆCŒJØ�t”}Ð$Ð$Øœ×+Ò+¨KÑ8Ô8ˆCŒJØœˆCŒJÝÕ Ñ$Ô$×-Ò-¨kÈÐ-ÑOÔOÐOØ!Ô0ˆÔØˆ
r!   c                 ó&   —  | j         j        |i |¤ŽS ©N)r   r*   )r   ÚargsÚkwargss      r    Ú_newzNegativeBinomial._newY   s   € ØˆtŒ{Œ Ð/¨Ð/Ð/Ð/r!   c                 óD   — | j         t          j        | j        ¦  «        z  S r,   )r   r$   Úexpr   ©r   s    r    ÚmeanzNegativeBinomial.mean\   s   € àÔ¥%¤)¨D¬KÑ"8Ô"8Ñ8Ð8r!   c                 ó–   — | j         dz
  | j                             ¦   «         z                       ¦   «                              d¬¦  «        S )Né   r   )Úmin)r   r   r1   ÚfloorÚclampr2   s    r    ÚmodezNegativeBinomial.mode`   s>   € àÔ! AÑ%¨¬¯ªÑ):Ô):Ñ:×AÒAÑCÔC×IÒIÈcÐIÑRÔRÐRr!   c                 óF   — | j         t          j        | j         ¦  «        z  S r,   )r3   r$   Úsigmoidr   r2   s    r    ÚvariancezNegativeBinomial.varianced   s   € àŒy�5œ=¨$¬+¨Ñ6Ô6Ñ6Ð6r!   c                 ó.   — t          | j        d¬¦  «        S ©NT)Ú	is_binary)r
   r   r2   s    r    r   zNegativeBinomial.logitsh   s   € å˜tœz°TÐ:Ñ:Ô:Ð:r!   c                 ó.   — t          | j        d¬¦  «        S r>   )r	   r   r2   s    r    r   zNegativeBinomial.probsl   s   € å˜tœ{°dÐ;Ñ;Ô;Ð;r!   c                 ó4   — | j                              ¦   «         S r,   )r   r   r2   s    r    Úparam_shapezNegativeBinomial.param_shapep   s   € àŒ{×ÒÑ!Ô!Ð!r!   c                 ó`   — t          | j        t          j        | j         ¦  «        d¬¦  «        S )NF)ÚconcentrationÚrater   )r   r   r$   r1   r   r2   s    r    Ú_gammazNegativeBinomial._gammat   s5   € õ ØÔ*Ý”˜DœK˜<Ñ(Ô(Øð
ñ 
ô 
ð 	
r!   c                 óº   — t          j        ¦   «         5  | j                             |¬¦  «        }t          j        |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )N)Úsample_shape)r$   Úno_gradrF   ÚsampleÚpoisson)r   rH   rE   s      r    rJ   zNegativeBinomial.sample}   s—   € ÝŒ]‰_Œ_ð 	'ð 	'Ø”;×%Ò%°<Ð%Ñ@Ô@ˆDÝ”= Ñ&Ô&ð	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ”/AÁAÁAc                 ó¤  — | j         r|                      |¦  «         | j        t          j        | j         ¦  «        z  |t          j        | j        ¦  «        z  z   }t          j        | j        |z   ¦  «         t          j        d|z   ¦  «        z   t          j        | j        ¦  «        z   }|                     | j        |z   dk    d¦  «        }||z
  S )Nr   r   )	r(   Ú_validate_sampler   ÚFÚ
logsigmoidr   r$   ÚlgammaÚmasked_fill)r   ÚvalueÚlog_unnormalized_probÚlog_normalizations       r    Úlog_probzNegativeBinomial.log_prob‚   sß   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(à $Ô 0µ1´<ØŒ[ˆLñ4
ô 4
ñ !
à•A”L ¤Ñ-Ô-Ñ-ñ!.Ðõ
 Œ\˜$Ô*¨UÑ2Ñ3Ô3Ð3ÝŒl˜3 ™;Ñ'Ô'ñ(åŒl˜4Ô+Ñ,Ô,ñ-ð 	ð .×9Ò9ØÔ˜uÑ$¨Ò+¨Sñ
ô 
Ðð %Ð'8Ñ8Ð8r!   )NNNr,   ) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úgreater_than_eqÚhalf_open_intervalÚrealÚarg_constraintsÚnonnegative_integerÚsupportr   ÚfloatÚboolr   r&   r/   Úpropertyr3   r9   r<   r   r   r   r$   r%   rB   r   rF   rJ   rU   Ú__classcell__)r   s   @r    r   r      sY  ø€ € € € € ðð ð  3�{Ô2°1Ñ5Ô5Ø/�Ô/°°SÑ9Ô9ØÔ"ðð €Oð
 Ô-€Gð
  $Ø $Ø%)ðCð Cà˜e‘^ðCð ˜‰}ðCð ˜‘ð	Cð
 ˜d‘{ðCð 
ðCð Cð Cð Cð Cð Cð@ð ð ð ð ð ð0ð 0ð 0ð ð9�fð 9ð 9ð 9ñ „Xð9ð ðS�fð Sð Sð Sñ „XðSð ð7˜&ð 7ð 7ð 7ñ „Xð7ð ð;˜ð ;ð ;ð ;ñ „]ð;ð ð<�vð <ð <ð <ñ „]ð<ð ð"˜UœZð "ð "ð "ñ „Xð"ð ð
˜ð 
ð 
ð 
ñ „]ð
ð #- %¤*¡,¤,ð 'ð 'ð 'ð 'ð
9ð 9ð 9ð 9ð 9ð 9ð 9r!   )r$   Útorch.nn.functionalÚnnÚ
functionalrN   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.gammar   Útorch.distributions.utilsr   r   r	   r
   Ú__all__r   © r!   r    ú<module>rm      s÷   ðð €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð Ð
€ðB9ð B9ð B9ð B9ð B9�|ñ B9ô B9ð B9ð B9ð B9r!   