U
    rh                     @  s^   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 ddd	Z
G d
d deZdS )    )annotationsN)helper)Base)expect      ?Fc                 C  s   |dks|dkr0|dkr,| t j| jtdfS | S t j| t jdd| j|k}dd|  }|rx||  | |tfS ||  | S )Nr   FT)Zdtypeg      ?   )npZonesshapeboolrandomseeduniformastype)XZdrop_probabilityr   training_modereturn_maskmaskZscale r   G/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/dropout.pydropout   s    r   c                   @  s   e Zd ZeddddZeddddZeddddZeddd	d
ZeddddZeddddZ	eddddZ
eddddZeddddZeddddZeddddZeddddZdS )DropoutNone)returnc                  C  sZ   t d} tjjddgdg| d}t jdddt j}t	|}t
||g|gd	d
 d S )Nr   r   xyinputsoutputsr            Ztest_dropout_defaultr   r   namer   int64onnxr   	make_noder   randnr   float32r   r   )r   noder   r   r   r   r   export_default   s
    
zDropout.export_defaultc                  C  sj   t d} tjjdddgdg| d}t d}t jdd	d
t j}t	||}t
|||g|gdd d S )Nr   r   r   rr   r   皙?r   r   r    Ztest_dropout_default_ratior!   r   r$   r%   r   r&   r(   r   r'   r   r   r   )r   r)   r+   r   r   r   r   r   export_default_ratio(   s    
   

zDropout.export_default_ratioc                  C  sf   t d} tjjddgddg| d}t jddd	t j}t	|d
d\}}t
||g||gdd d S )Nr   r   r   r   zr   r   r   r    Tr   Ztest_dropout_default_maskr!   r#   )r   r)   r   r   r/   r   r   r   export_default_mask4   s    
   zDropout.export_default_maskc                  C  sv   t d} tjjdddgddg| d}t d}t jd	d
dt j}t	||dd\}}t
|||g||gdd d S )Nr   r   r   r+   r   r/   r   r,   r   r   r    Tr0   Ztest_dropout_default_mask_ratior!   r-   )r   r)   r+   r   r   r/   r   r   r   export_default_mask_ratio?   s     
   
   z!Dropout.export_default_mask_ratioc                  C  s|   t d} tjjddddgdg| d}t jdd	d
t j}t d}t 	d}t
|||d}t||||g|gdd d S )Nr   r   r   r+   tr   r   r   r   r    r   Tr   Ztest_training_dropout_defaultr!   r   r$   r%   r   r&   r   r'   r   r(   Zbool_r   r   r   r)   r   r+   r3   r   r   r   r   export_training_defaultO   s"    
   

   zDropout.export_training_defaultc                  C  s   t d} tjjddddgddg| d}t jd	d
dt j}t d}t 	d}t
|||dd\}}t||||g||gdd d S )Nr   r   r   r+   r3   r   r/   r   r   r   r    r   Tr   r   Z"test_training_dropout_default_maskr!   r5   r   r)   r   r+   r3   r   r/   r   r   r   "export_training_default_ratio_mask^   s"    
   

z*Dropout.export_training_default_ratio_maskc                  C  s|   t d} tjjddddgdg| d}t jdd	d
t j}t d}t 	d}t
|||d}t||||g|gdd d S )Nr   r   r   r+   r3   r   r   r   r   r          ?Tr4   Ztest_training_dropoutr!   r5   r6   r   r   r   export_trainingp   s    
   

zDropout.export_trainingc                  C  s   t d} tjjddddgddg| d}t jd	d
dt j}t d}t 	d}t
|||dd\}}t||||g||gdd d S )Nr   r   r   r+   r3   r   r/   r   r   r   r    r;   Tr8   Ztest_training_dropout_maskr!   r5   r9   r   r   r   export_training_ratio_mask}   s"    
   

   z"Dropout.export_training_ratio_maskc                  C  s|   t d} tjjddddgdg| d}t jdd	d
t j}t d}t 	d}t
|||d}t||||g|gdd d S )Nr   r   r   r+   r3   r   r   r   r   r            Tr4   Z test_training_dropout_zero_ratior!   r5   r6   r   r   r   "export_training_default_zero_ratio   s"    
   

   z*Dropout.export_training_default_zero_ratioc                  C  s   t d} tjjddddgddg| d}t jd	d
dt j}t d}t 	d}t
|||dd\}}t||||g||gdd d S )Nr   r   r   r+   r3   r   r/   r   r   r   r    r>   Tr8   Z%test_training_dropout_zero_ratio_maskr!   r5   r9   r   r   r   'export_training_default_zero_ratio_mask   s"    
   

z/Dropout.export_training_default_zero_ratio_maskc               	   C  sV   t jjddgdgd} tdddgtj}|}t| |g|gdtd	d
gd d S )Nr   r   r   )r   r   r   r   Ztest_dropout_default_old    r   r   r"   Zopset_imports)	r%   r   r&   r   arrayr   r(   r   make_opsetidr)   r   r   r   r   r   export_default_old   s    zDropout.export_default_oldc               	   C  sX   t jjddgdgdd} tjdddtj}|}t| |g|gd	t	d
dgd d S )Nr   r   r   g?)r   r   Zratior   r   r    Ztest_dropout_random_oldrB   rC   rD   )
r%   r   r&   r   r   r'   r   r(   r   rF   rG   r   r   r   export_random_old   s    zDropout.export_random_oldN)__name__
__module____qualname__staticmethodr*   r.   r1   r2   r7   r:   r<   r=   r?   r@   rH   rI   r   r   r   r   r      s0   
r   )r   r   FF)
__future__r   Znumpyr   r%   r   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   
