o
    toi                     @  sr   d dl mZ d dlZd dlmZ 	dddd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)OpRunh㈵>x
np.ndarraysbiasmeanvarepsilonfloatreturnc           	      C  s   t | j}d|d  }|jdg|R  }|jdg|R  }|jdg|R  }|jdg|R  }|| |  t||  | }|| jS )N)      )lenshapereshapenpsqrtastypedtype)	r   r   r   r	   r
   r   dims_xdim_onesy r   ]/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/op_batch_normalization.py_batchnorm_test_mode   s   
r   ?momentumc                 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  s:   |rt ||||||d}
|
fS t|||||||d}
|
fS )Nr"   )r   r   r   r*   )selfr   scaler   r	   r
   r   is_testr   spatialresr   r   r   _run6   s   zBatchNormalization_6._run)NNNN__name__
__module____qualname__r2   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 u 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   r1   r!   r&   r'   r(   r)   r   r   r   r2   L   s   zBatchNormalization_9._run)NNr3   r   r   r   r   r7   K   s    r7   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   training_moder1   ___r(   r)   r   r   r   r2   \   s   
zBatchNormalization_14._run)NNNr3   r   r   r   r   r8   [   s    r8   )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   r   r   r   r   )
__future__r   numpyr   onnx.reference.op_runr   r   r*   r+   r7   r8   r   r   r   r   <module>   s   	