U
    qh*                  
   @  s   d dl mZ d dlZd dlmZ ddddddddddd	Zdd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)OpRunh㈵>z
np.ndarrayfloat)xsbiasmeanvarepsilonreturnc           	      C  sx   t | j}d|d  }|jd| }|jd| }|jd| }|jd| }|| |  t||  | }|| jS )N)      )r   )r   )r   )r   )lenshapeZreshapenpsqrtastypedtype)	r   r   r   r	   r
   r   Zdims_xZdim_onesy r   M/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_batch_normalization.py_batchnorm_test_mode   s    
r   ?)r   r   r   r	   r
   momentumr   r   c                 C  s   t ttt| jd}| j|d}| j|d}	|| |d|   }
|| |	d|   }t| ||||	|d}|	| j
|	| j
|		| j
|
	| j
|	| j
fS )Nr   axisr   )tupler   deletearanger   r   r	   r
   r   r   r   )r   r   r   r	   r
   r   r   r   
saved_mean	saved_varoutput_mean
output_varr   r   r   r   _batchnorm_training_mode   s    	




r&   c                   @  s   e Zd ZdddZdS )BatchNormalization_6Nc
              	   C  s6   |rt ||||||d}
nt|||||||d}
|
fS )Nr   )r   r   r   r&   )selfr   scaler   r	   r
   r   Zis_testr   Zspatialresr   r   r   _run6   s          zBatchNormalization_6._run)NNNN__name__
__module____qualname__r,   r   r   r   r   r'   5   s
       r'   c                   @  s   e Zd ZdddZdS )BatchNormalization_9Nc                 C  s   |d kr"t ||||||d}|fS tttt|jd}	|j|	d}
|j|	d}|| |
d|   }|| |d|   }t ||||||d}|fS )Nr   r   r   )	r   r   r   r    r!   r   r   r	   r
   )r)   r   r*   r   r	   r
   r   r   r+   r   r"   r#   r$   r%   r   r   r   r,   L   s"         zBatchNormalization_9._run)NNr-   r   r   r   r   r1   K   s   r1   c                   @  s   e Zd ZdddZdS )BatchNormalization_14Nc	                 C  sJ   |dkr"t ||||||d}	|	fS t|||||||\}	}
}}}|	||fS )Nr   r   r(   )r)   r   r*   r   r	   r
   r   r   Ztraining_moder+   ___r$   r%   r   r   r   r,   \   s          zBatchNormalization_14._run)NNNr-   r   r   r   r   r2   [   s        r2   )r   )r   r   )
__future__r   Znumpyr   Zonnx.reference.op_runr   r   r&   r'   r1   r2   r   r   r   r   <module>   s   	   