o
    wi                     @  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u r|du r| t j| jtdfS | S t j| t jdd| j|k}dd|  }|r<||  | |tfS ||  | S )Nr   FT)dtypeg      ?   )nponesshapeboolrandomseeduniformastype)Xdrop_probabilityr   training_modereturn_maskmaskscale r   `/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/dropout.pydropout   s   r   c                   @  s   e Zd ZedddZedddZedddZedd	d
ZedddZedddZ	edddZ
edddZedddZedddZedddZedddZdS )DropoutreturnNonec                  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            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$   test_dropout_default_ratior&   r	   r)   r*   r   r+   r-   r   r,   r   r   r   )r   r.   r0   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   test_dropout_default_maskr&   r(   )r   r.   r   r   r5   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   r0   r   r5   r   r1   r"   r#   r$   Tr6   test_dropout_default_mask_ratior&   r3   )r   r.   r0   r   r   r5   r   r   r   export_default_mask_ratio?   s   


z!Dropout.export_default_mask_ratioc                  C  z   t d} tjjdg d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   r0   tr   r   r"   r#   r$   r   Tr   test_training_dropout_defaultr&   r	   r)   r*   r   r+   r   r,   r   r-   bool_r   r   r   r.   r   r0   r=   r   r   r   r   export_training_defaultO      



zDropout.export_training_defaultc                  C     t d} tjjdg d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   r5   r   r"   r#   r$   r   Tr   r   "test_training_dropout_default_maskr&   r@   r   r.   r   r0   r=   r   r5   r   r   r   "export_training_default_ratio_mask^      



z*Dropout.export_training_default_ratio_maskc                  C  r;   )Nr   r   r<   r   r   r"   r#   r$         ?Tr>   test_training_dropoutr&   r@   rB   r   r   r   export_trainingp   s   


zDropout.export_trainingc                  C  rE   )Nr   r   r<   r   r5   r   r"   r#   r$   rK   TrF   test_training_dropout_maskr&   r@   rH   r   r   r   export_training_ratio_mask}   s   



z"Dropout.export_training_ratio_maskc                  C  r;   )Nr   r   r<   r   r   r"   r#   r$           Tr>    test_training_dropout_zero_ratior&   r@   rB   r   r   r   "export_training_default_zero_ratio   rD   z*Dropout.export_training_default_zero_ratioc                  C  rE   )Nr   r   r<   r   r5   r   r"   r#   r$   rP   TrF   %test_training_dropout_zero_ratio_maskr&   r@   rH   r   r   r   'export_training_default_zero_ratio_mask   rJ   z/Dropout.export_training_default_zero_ratio_maskc               	   C  sT   t jjddgdgd} tg dtj}|}t| |g|gdtddgd	 d S )
Nr   r   r   )r    r!   )r   r   test_dropout_default_old    r    r!   r'   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!   ratior"   r#   r$   test_dropout_random_oldrW   rX   rY   )
r*   r   r+   r	   r   r,   r   r-   r   r\   r]   r   r   r   export_random_old   s   
zDropout.export_random_oldN)r   r   )__name__
__module____qualname__staticmethodr/   r4   r8   r:   rC   rI   rM   rO   rR   rT   r^   ra   r   r   r   r   r      s2    
r   )r   r   FF)
__future__r   numpyr	   r*   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   
