U
    h                     @   s`   d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
 G dd deZG d	d
 d
e
ZdS )    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                       s   e Zd Z fddZ  ZS )QLinearSoftmaxc                    sH  | j }| jjtjjjkr"d}d}nd}d}| j|jd ||\}}}}}| j	|dg\}}	}
}|rn|d krxt
  S |jd t }t|jd |||tj}|| jj|jd < i }|jD ]}|t| qt|d< | jj|d< |jr|jd nd}tjjd|j |d |
d |	d ||g|g|f|}|| | j j|7  _d S )	N      p?r   domainZopsetZ_quant ZQLinear)node	quantizeractivation_qTypeonnxonnx_pbTensorProtoUINT8Z_get_quantization_paramsoutputZquantize_activationsuperquantizer   r   r   ZInputZquantized_value_map	attributeupdater   r   Zopset_versionnamehelperZ	make_nodeZop_typeappendZ	new_nodes)selfr   	out_scaleout_zero_pointZ
data_foundZoutput_scale_nameZoutput_zp_name_Zquantized_input_namesZinput_zero_point_namesZinput_scale_namesZnodesZqlinear_output_nameZquantized_output_valuekwargsr   Zqlinear_node_nameZqnode	__class__ N/tmp/pip-unpacked-wheel-socb9apf/onnxruntime/quantization/operators/softmax.pyr   	   sh    	


zQLinearSoftmax.quantize__name__
__module____qualname__r   __classcell__r&   r&   r$   r'   r      s   r   c                       s   e Zd Z fddZ  ZS )
QDQSoftmaxc                    s^   t    | jjtjjjkr&d}d}n| jjr8d}d}nd}d}| j	| j
jd ||f d S )Nr   r   g@ ?r   )r   r   r   r   r   r   r   r   Zis_activation_symmetricZset_quant_scale_zpr   r   )r   r    r!   r$   r&   r'   r   N   s    
zQDQSoftmax.quantizer(   r&   r&   r$   r'   r-   M   s   r-   )r   Zquant_utilsr   r   r   r   r   Zbase_operatorr	   Zqdq_base_operatorr
   r   r-   r&   r&   r&   r'   <module>   s
   E