o
    
jP
                     @   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__ ]/home/kuhnn/.local/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
    