U
    qh                     @  s4   d dl mZ d dlZd dlmZ G dd deZdS )    )annotationsN)OpRunAiOnnxMlc                   @  s:   e Zd Zedd Zedd Zedd Zd
dd	ZdS )
Normalizerc                 C  s2   t | jdd| jd df}| t |d S )zMax normalization   Zaxisr   KH9)npabsmaxreshapeshapemaximumxdiv r   M/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/aionnxml/op_normalizer.pynorm_max   s    "zNormalizer.norm_maxc                 C  s2   t | jdd| jd df}| t |d S )zL1 normalizationr   r   r   r   r   )r	   r
   sumr   r   r   r   r   r   r   norm_l1   s    "zNormalizer.norm_l1c                 C  sD   t | jdd}t j||d t || jd dfd}| | S )zL2 normalizationr   r   )outr   r   r   )r	   Zsquarer   sqrtr   r   r   )r   Zxnnormr   r   r   norm_l2   s    zNormalizer.norm_l2Nc                 C  sJ   |dkrt j}n0|dkr t j}n |dkr0t j}ntd| d||fS )NMAXZL1ZL2zUnexpected value for norm='z'.)r   r   r   r   
ValueError)selfr   r   Z_normr   r   r   _run    s    zNormalizer._run)N)__name__
__module____qualname__staticmethodr   r   r   r   r   r   r   r   r      s   


r   )
__future__r   Znumpyr	   Z,onnx.reference.ops.aionnxml._op_run_aionnxmlr   r   r   r   r   r   <module>   s   