U
    qhs                     @  sz   d dl mZ d dlZd dlmZ d dlmZ dddd	d
d
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
np.ndarrayfloat
int | Nonebooltuple[np.ndarray])Xdrop_probabilityseedtraining_modereturn_maskreturnc                 C  sz   |dks|s*|r$| t j| jtdfS | fS t|}|dd| j|k}dd|  }|rl||  | |tfS ||  | fS )Nr   )Zdtypeg      ?)npZonesshaper	   r   uniformZastype)r   r   r   r   r   ZrndmaskZscale r   A/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_dropout.py_dropout   s    r   c                   @  s,   e Zd Zdd Zddddd	d
dddZdS )DropoutBasec                 C  s   t | || t|j| _d S N)r   __init__lenoutput	n_outputs)selfZ	onnx_nodeZ
run_paramsr   r   r   r      s    zDropoutBase.__init__Nr   Fr   r   r   r	   r
   )r   r   ratior   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)__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._run)N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r0d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)
__future__r   Znumpyr   Znumpy.randomr   Zonnx.reference.op_runr   r   r   r%   r(   r   r   r   r   <module>   s       