o
    wis                     @  st   d dl mZ d dlZd dlmZ d dlmZ 				ddddZG dd deZ	G dd de	Z
G dd de	ZdS )    )annotationsN)RandomState)OpRun      ?FX
np.ndarraydrop_probabilityfloatseed
int | Nonetraining_modeboolreturn_maskreturntuple[np.ndarray]c                 C  sz   |dks|s|r| t j| jtdfS | fS t|}|dd| j|k}dd|  }|r6||  | |tfS ||  | fS )Nr   )dtypeg      ?)nponesshaper   r   uniformastype)r   r   r
   r   r   rndmaskscale r   Z/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/reference/ops/op_dropout.py_dropout   s   (r   c                   @  s&   e Zd Zdd Z			ddddZdS )DropoutBasec                 C  s   t | || t|j| _d S N)r   __init__lenoutput	n_outputs)self	onnx_node
run_paramsr   r   r   r      s   zDropoutBase.__init__Nr   Fr   r   r
   r   ratior	   r   r   r   r   c                 C  s   t |||| jdk|dS )N   )r
   r   r   )r   r"   )r#   r   r
   r&   r   r   r   r   _private_run#   s   zDropoutBase._private_run)Nr   F)
r   r   r
   r   r&   r	   r   r   r   r   )__name__
__module____qualname__r   r(   r   r   r   r   r      s    r   c                   @  s   e Zd ZdddZdS )	Dropout_7Nc                 C  s   |  ||S r   )r(   )r#   r   r&   r   r   r   _run4   s   zDropout_7._runr   r)   r*   r+   r-   r   r   r   r   r,   3   s    r,   c                   @  s   e Zd ZddddZdS )
Dropout_12N)r
   c                G  sJ   |d }t |dkrdn|d }t |dkrdn|d }| j||||dS )Nr      r   r'   F)r
   r&   r   )r    r(   )r#   r
   inputsr   r&   r   r   r   r   r-   9   s   zDropout_12._runr.   r   r   r   r   r/   8   s    r/   )r   NFF)r   r   r   r	   r
   r   r   r   r   r   r   r   )
__future__r   numpyr   numpy.randomr   onnx.reference.op_runr   r   r   r,   r/   r   r   r   r   <module>   s   