o
    toi                     @  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  2   t | jdd| jd df}| t |d S )zMax normalization   axisr   KH9)npabsmaxreshapeshapemaximumxdiv r   ]/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/aionnxml/op_normalizer.pynorm_max      "zNormalizer.norm_maxc                 C  r   )zL1 normalizationr   r   r   r	   r
   )r   r   sumr   r   r   r   r   r   r   norm_l1   r   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   squarer   sqrtr   r   r   )r   xnnormr   r   r   norm_l2   s   zNormalizer.norm_l2Nc                 C  sJ   |dkrt j}n|dkrt j}n|dkrt j}ntd| d||fS )NMAXL1L2zUnexpected value for norm='z'.)r   r   r   r   
ValueError)selfr   r   _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   numpyr   ,onnx.reference.ops.aionnxml._op_run_aionnxmlr   r   r   r   r   r   <module>   s   