U
    U?hP
                     @   sL   d dl Z d dlZ ddlmZmZmZmZmZ ddlm	Z	 G dd de	Z
dS )    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBasec                       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 )	Ng      p?r   idomainZopsetZ_quant ZQLinear)nodeZ	quantizerZactivation_qTypeonnxZonnx_pbZTensorProtoZ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   Z	out_scaleZ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__ \/var/www/html/venv/lib/python3.8/site-packages/onnxruntime/quantization/operators/softmax.pyr   	   sh    	


zQLinearSoftmax.quantize)__name__
__module____qualname__r   __classcell__r   r   r   r   r
      s   r
   )r   Zonnx.helperZquant_utilsr   r   r   r   r   Zbase_operatorr	   r
   r   r   r   r   <module>   s   