o
    ²3IhP
  ã                   @   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                    sL  | j }| jjtjjjkrd}d}nd}d}| j |jd ||¡\}}}}}| j 	|dg¡\}}	}
}|r7|d u r<t
ƒ  ¡ S |jd t }t|jd |||tjƒ}|| jj|jd < i }|jD ]	}| t|ƒ¡ q]t|d< | jj|d< |jry|jd nd}tjjd|j |d |
d |	d ||g|g|fi |¤Ž}| |¡ | j j|7  _d S )	Ng      p?r   i€ÿÿÿÚdomainÚopsetÚ_quantÚ ÚQLinear)ÚnodeÚ	quantizerÚactivation_qTypeÚonnxÚonnx_pbÚTensorProtoÚUINT8Ú_get_quantization_paramsÚoutputÚquantize_activationÚsuperÚquantizer   r   r   ÚInputÚquantized_value_mapÚ	attributeÚupdater   r   Úopset_versionÚnameÚhelperÚ	make_nodeÚop_typeÚappendÚ	new_nodes)Úselfr   Ú	out_scaleÚout_zero_pointÚ
data_foundÚoutput_scale_nameÚoutput_zp_nameÚ_Úquantized_input_namesÚinput_zero_point_namesÚinput_scale_namesÚnodesÚqlinear_output_nameÚquantized_output_valueÚkwargsr   Úqlinear_node_nameÚqnode©Ú	__class__© új/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/onnxruntime/quantization/operators/softmax.pyr   	   sh   ú	û
û
ûöõ
zQLinearSoftmax.quantize)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__r9   r9   r7   r:   r
      s    r
   )r   Úonnx.helperÚquant_utilsr   r   r   r   r   Úbase_operatorr	   r
   r9   r9   r9   r:   Ú<module>   s
    