o
    toi                     @  sH   d dl mZ d dlZd dlmZmZmZ d dlm	Z	 G dd de	Z
dS )    )annotationsN)compute_probitcompute_softmax_zeroexpit)OpRunAiOnnxMlc                   @  s.   e Zd Zedd Z						dddZdS )LinearClassifierc                   s(    durt  fdd| D } | |fS )zNReplaces int64 predicted labels by the corresponding
        strings.
        Nc                      g | ]} | qS  r	   .0iclasslabels_ints_stringr	   d/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/aionnxml/op_linear_classifier.py
<listcomp>       zBLinearClassifier._post_process_predicted_label.<locals>.<listcomp>)nparray)labelscoresr   r	   r   r   _post_process_predicted_label   s   z.LinearClassifier._post_process_predicted_labelNc                   s  |j }|tjkr|tj}t||j }t||j }|d|jd fj}t	||}	|d ur9|	|7 }	t
t p>g tpCg }
|jd dkr}|
dkr}tj|	jd dftjd}|	d d df  |d d df< |	d d df |d d df< |}	|dkrns|dkrt|	}	nj|dkrtj|	|	j
ddd	|	d
 t|	}	t|	|	jddd	}	nH|dkrt|	jd D ]}t|	|d d f |	|d d f< qn)|dkrt|	jd D ]}t|	jd D ]}t|	||f |	||f< qqntd|	jd dkr1tj|	dd} d urtj fdd|D tjd}||	fS d ur-tfdd|D }||	fS |dkr8dnd} d urTt|	|k d dtj }||	fS d urnt|	|kd dtj }||	fS |	|ktj }||	fS )N      r   )dtypeNONELOGISTICSOFTMAX)axiskeepdims)outSOFTMAX_ZEROPROBITz+Unknown post_transform: '{post_transform}'.)r   c                   r   r	   r	   r
   )classlabels_intsr	   r   r   O   r   z)LinearClassifier._run.<locals>.<listcomp>c                   r   r	   r	   r
   )classlabels_stringsr	   r   r   Q   r   g      ? )r   r   float64astypefloat32r   reshapeshapeTdotmaxlenemptyr   subtractexpdividesumranger   r   NotImplementedErrorargmaxint64whereravel)selfxr#   r$   coefficients
interceptsmulti_classpost_transformr   r   	n_classes
new_scoresr   jlabels	thresholdr	   )r#   r$   r   _run   sz   


"



zLinearClassifier._run)NNNNNN)__name__
__module____qualname__staticmethodr   rE   r	   r	   r	   r   r      s    
r   )
__future__r   numpyr   .onnx.reference.ops.aionnxml._common_classifierr   r   r   ,onnx.reference.ops.aionnxml._op_run_aionnxmlr   r   r	   r	   r	   r   <module>   s
   