
    zj                       d dl mZ d dlmZ d dlZd dlmZ erd dlmZ d dlm	Z	 d dl
mZ  G d d	          Z G d
 de          Z G d de          Z G d de          Z G d de          Z e            Z e            ZdS )    )annotations)TYPE_CHECKINGN)
constraint)Sequence)Tensor)
Constraintc                  Z    e Zd ZdZ	 	 	 dddZedd            Zedd            ZddZdS )Variablea  Random variable of probability distribution.

    Args:
        is_discrete (bool): Is the variable discrete or continuous.
        event_rank (int): The rank of event dimensions.
        constraint (Constraint|None, optional): The constraint of the variable.
    Fr   Nis_discretebool
event_rankintr   Constraint | NonereturnNonec                0    || _         || _        || _        d S N)_is_discrete_event_rank_constraint)selfr   r   r   s       l/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/distribution/variable.py__init__zVariable.__init__&   s"     (%%    c                    | j         S r   )r   r   s    r   r   zVariable.is_discrete0   s      r   c                    | j         S r   )r   r   s    r   r   zVariable.event_rank4   s    r   valuer   c                H    | j         J | j                             |          S )zYCheck whether the 'value' meet the constraint conditions of this
        random variable.)r   checkr   r   s     r   r   zVariable.constraint8   s*     +++%%e,,,r   )Fr   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	__name__
__module____qualname____doc__r   propertyr   r   r    r   r   r
   r
      s          "(,	& & & & & ! ! ! X!       X - - - - - -r   r
   c                  "     e Zd Zdd fdZ xZS )	Realr   r   r   r   r   c                b    t                                          d|t          j                   d S NF)superr   r   realr   r   	__class__s     r   r   zReal.__init__@   s'    
JO<<<<<r   r   r   r   r   r   r%   r&   r'   r   __classcell__r2   s   @r   r,   r,   ?   sB        = = = = = = = = = = =r   r,   c                  "     e Zd Zdd fdZ xZS )	Positiver   r   r   r   r   c                b    t                                          d|t          j                   d S r.   )r/   r   r   positiver1   s     r   r   zPositive.__init__E   s(    
J,?@@@@@r   r3   r4   r5   r7   s   @r   r9   r9   D   sM        A A A A A A A A A A Ar   r9   c                  ,     e Zd ZdZd fdZddZ xZS )IndependentzReinterprets some of the batch axes of variable as event axes.

    Args:
        base (Variable): Base variable.
        reinterpreted_batch_rank (int): The rightmost batch rank to be
            reinterpreted.
    baser
   reinterpreted_batch_rankr   r   r   c                    || _         || _        t                                          |j        |j        |z              d S r   )_base_reinterpreted_batch_rankr/   r   r   r   )r   r>   r?   r2   s      r   r   zIndependent.__init__R   sH    
)A&do0HH	
 	
 	
 	
 	
r   r   r   c                F   | j                             |          }|                                | j        k     rt	          d| j                   |                    g |j        d |                                | j        z
           dR                               d          S )Nz/Input dimensions must be equal or grater than  )	rA   r   dimrB   
ValueErrorreshapeshaper?   all)r   r   rets      r   r   zIndependent.constraintY   s    j##E**7799t555b$B`bb   {{IciC#''))d&CCCDIbII
 

#b''	r   )r>   r
   r?   r   r   r   r$   )r%   r&   r'   r(   r   r   r6   r7   s   @r   r=   r=   I   s[         
 
 
 
 
 
       r   r=   c                  P    e Zd ZdddZedd
            Zedd            ZddZdS )Stackr   varsSequence[Variable]axisr   r   r   c                "    || _         || _        d S r   )_vars_axis)r   rM   rO   s      r   r   zStack.__init__e   s    



r   r   c                >    t          d | j        D                       S )Nc              3  $   K   | ]}|j         V  d S r   )r   .0vars     r   	<genexpr>z$Stack.is_discrete.<locals>.<genexpr>k   s$      99s3?999999r   )anyrQ   r   s    r   r   zStack.is_discretei   s!    99dj999999r   c                h    t          d | j        D                       }| j        |z   dk     r|dz  }|S )Nc              3  $   K   | ]}|j         V  d S r   )r   rU   s     r   rX   z#Stack.event_rank.<locals>.<genexpr>o   s$      88c3>888888r   r      )maxrQ   rR   )r   ranks     r   r   zStack.event_rankm   s@    88TZ88888:q  AIDr   r   r   c           
     l   |                                  | j        cxk    r|                                 k     s/n t          d|                                  d| j         d          t          j        d t          | j        t          j        || j                            D             | j                  S )NzInput dimensions z- should be grater than stack constraint axis .c                >    g | ]\  }}|                     |          S r*   )r    )rV   rW   r   s      r   
<listcomp>z$Stack.constraint.<locals>.<listcomp>|   s8       C 		%    r   )rE   rR   rF   paddlestackziprQ   unstackr!   s     r   r   zStack.constraintt   s    
8888UYY[[88881EIIKK 1 1#':1 1 1  
 | "%Judj A A# #   J
 
 	
r   Nr3   )rM   rN   rO   r   r   r   r"   r#   r$   )r%   r&   r'   r   r)   r   r   r   r*   r   r   rL   rL   d   s             : : : X:    X
 
 
 
 
 
r   rL   )
__future__r   typingr   rc   paddle.distributionr   collections.abcr   r   paddle.distribution.constraintr   r
   r,   r9   r=   rL   r0   r;   r*   r   r   <module>rl      sz   # " " " " "              * * * * * * :((((((999999- - - - - - - -D= = = = =8 = = =
A A A A Ax A A A
    (   6
 
 
 
 
H 
 
 
D tvv8::r   