o
    toivM                    @  s>  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
m
Z
 d dlZd dlmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZmZmZ eed	d
ZeeddZ eeddZ!ej"# d Z$ej"% Z&ede$ede&gZ'dd Z(G dd dej)Z*e+dkrej,dd dS dS )    )annotationsN)assert_allclose)parameterized)ONNX_MLTensorProto	TypeProtoValueInfoProto)
make_graphmake_model_gen_version	make_nodemake_opsetidmake_tensormake_tensor_value_info)ReferenceEvaluator)AggregationFunctionModePostTransformORT_MAX_IR_SUPPORTED_VERSION8$ORT_MAX_ONNX_OPSET_SUPPORTED_VERSION18"ORT_MAX_ML_OPSET_SUPPORTED_VERSION3    
ai.onnx.mlc                   C  s   t jdd uS )Nonnxruntime)	importlibutil	find_spec r    r    Y/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/reference_evaluator_ml_test.pyhas_onnxruntime0   s   r"   c                   @  s  e Zd ZedpddZeje dddd Zeje ddd	d
 Z	eje dddd Z
eje dddd Zeje dddd Zeje dddd Zeje dddd Zeje dddd Zeje dddd Zeje dddd Zeje dddd Zeje dddd Zeje dddd  Zeje ddd!d" Zeje ddd#d$ Zeje ddd%d& Zeje ddd'd( Zeje ddd)d* Zeje ddd+d, Zeje ddd-d. Zeejdejfd/d0Z e	2dqd3d4Z!e"#e$e%j&'d5d6 d7D eje ddd8d9 Z(e"#e$e%j&'d:d6 d7D eje ddd;d< Z)eje ddd=d> Z*eje ddd?d@ Z+eje dde"#dAdB ejej,fD dCdD Z-eje dddEdF Z.eje dddGdH Z/eje dddIdJ Z0edKdL Z1eje dddMdN Z2edOdP Z3eje dddQdR Z4edSdT Z5eje dddUdV Z6ed7dXdYZ7eje dddZd[ Z8eje ddd\d] Z9eje ddd^d_ Z:eje ddd`da Z;edrdbdcZ<eje ddddde Z=edsdfdgZ>eje dddhdi Z?eje dddjdk Z@dldm ZAdndo ZBd2S )tTestReferenceEvaluatorAiOnnxMlr   Fc                 C  s  t  stdddlm} t}t}| jD ]}	|	jdv r!|	j	} nq| jD ]}	|	jdkr1|	j	} nq%| j
tks?|tks?|tkrAd S ||  dgd}
t| }|
d |}|d |}t|t|krqtdt| d	t| d
|r~tt|t|ddnt||dd}t|D ]N\}\}}|j|jkrtd|j d| d|j d|d|d|r| | krtd| d| d| qt||||d| d| d  dd qd S )Nzonnxruntime not installedr   )InferenceSession)r   zai.onnxr   CPUExecutionProvider)	providersz1onnxruntime returns a different number of output z != z (ReferenceEvaluator).T)strictzUnexpected shape z for output z (expecting z)
z
---
.zDiscrepancies for output z
expected=
z
!=
results=
z expected[0]=)actualdesiredatolrtolerr_msg)r"   unittestSkipTestr   r$   r   r   opset_importdomainversion
ir_versionr   SerializeToStringr   runlenAssertionErrorzipreversed	enumerateshapetolistr   ravel)modelfeedsr+   r,   equalrevr$   onnx_domain_opsetml_domain_opsetopsetortsessexpectedgotlookiegr    r    r!   
_check_ort5   s   






z)TestReferenceEvaluatorAiOnnxMl._check_ortz!onnx not compiled with ai.onnx.ml)reasonc           
      C  s   t dtjd d g}t dtjd d g}tddgdgddd}t|gd|g|g}t|td}tj	| t
d	d
t
j}t
jg dg dg dgt
jd}| |d|i t|}|d d|id }	t|	| d S )NXY	Binarizerg      @r   )	thresholdr1   mlopset_imports         )r   r   r   r   )r   r      rZ   )rZ   rZ   rZ   rZ   dtyper   r   r   FLOATr   r	   r
   OPSETSonnxcheckercheck_modelnparangereshapeastypefloat32arrayrM   r   r5   r   
selfrO   rP   node1graphr>   xrG   rF   rH   r    r    r!   test_binarizers   s   z-TestReferenceEvaluatorAiOnnxMl.test_binarizerc           
      C  s   t dtjd d g}t dtjd d g}tddgdgdgdgdd}t|gd|g|g}t|td	}tj	| t
d
dt
j}t
jg dg dg dgt
jd}| |d|i t|}|d d|id }	t|	| d S )NrO   rP   Scaler      ?g      r   )scaleoffsetr1   rS   rT   rV   rW   )g      @g      @g      
@g      @)g      @g      @g      @g      @)g      @g      @g      @g      @r[   r   r]   ri   r    r    r!   test_scaler   s(   z*TestReferenceEvaluatorAiOnnxMl.test_scalerc                 C  s  t dtjd d g}t dtjd g}t dtjd d g}tdddgdgdd}t|gd||g|g}t|td}tj	
| td	d
tj}tjg dgtjdj}|tjdgtjdd}	| ||	 t|}
|
d |	d }t|| tjg dg dgtjdj}|tjddgtjdd}	| ||	 t|}
|
d |	d }t|| tjg dg dg dg dg dg dgtjdj}|tjg dtjdd}	| ||	 t|}
|
d |	d }t|| d S )NrO   ArP   ArrayFeatureExtractorr   )r1   rS   rT   rV   rW   )r   rY      r[   r   )rO   rt   )rZ      	   rZ   )r   rZ   r   rZ   r   rZ   )r   r   r^   INT64r   r	   r
   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   Tint64rM   r   r5   r   )rj   rO   rt   rP   rk   rl   r>   rm   rG   r?   rF   rH   r    r    r!   test_array_feature_extractor   sB   

&z;TestReferenceEvaluatorAiOnnxMl.test_array_feature_extractorc              	   C  sB  t dtjd d g}t dtjd d g}tddtj}||jddd |t	|j
ddd ||d j
dddd  d	}| D ]Z\}}| j|d
H tddgdg|dd}t|gd|g|g}t|td}	tj|	 d|i}
| j|	|
dd t|	}|d |
d }t||dd W d    n1 sw   Y  qDd S )NrO   rP   rV   rW   rZ   )axiskeepdimsr   rp   )MAXL1L2)norm
Normalizerr   )r   r1   rS   rT   ư>r+   r   )r   r   r^   rc   rd   re   rf   rg   maxabssumitemssubTestr   r	   r
   r_   r`   ra   rb   rM   r   r5   r   )rj   rO   rP   rm   rG   r   valuerk   rl   r>   r?   rF   rH   r    r    r!   test_normalizer   s.   z.TestReferenceEvaluatorAiOnnxMl.test_normalizerc              	   C  s  t dtjd d gt dtjd d gg}t dtjd d g}tddtjtddtjd g}tjdgdgd	ggtjd
tjddgddgd	dggtjd
tjg dg dg dgtjd
tjddgddgd	dggtjd
tjdgdgdggtjd
d}|	 D ]}\}}t
|trt|n|}| j|d` tddd tt|D dg|dd}t|gd|d t| |g}	t|	td}
tj|
 dd t|d t| D }| j|
|dd t|
}|d |d }t||dd W d    n1 sw   Y  qd S ) NX0X1rP   rx   )rX   rX   rp   r   rX      r[   rZ   rY      )r   rZ   r   r   )rX   rY   rw   r   )r   r   rv   r   g      @g      @))rZ   )r   rY   )rZ   rZ   )r   rZ   )inputdimensionsFeatureVectorizerc                 S  s   g | ]}d | qS rO   r    ).0rJ   r    r    r!   
<listcomp>   s    zJTestReferenceEvaluatorAiOnnxMl.test_feature_vectorizer.<locals>.<listcomp>r   )r   r1   rS   rT   c                 S  s   i | ]
\}}d | |qS r   r    )r   rJ   vr    r    r!   
<dictcomp>   s    zJTestReferenceEvaluatorAiOnnxMl.test_feature_vectorizer.<locals>.<dictcomp>r   r   )r   r   r^   rc   rd   re   rf   rg   rh   r   
isinstancetuplelistr   r   ranger6   r	   r
   r_   r`   ra   rb   r:   rM   r   r5   r   )rj   rO   rP   rm   rG   r   r   attrk   rl   r>   r?   rF   rH   r    r    r!   test_feature_vectorizer   sN     	
z6TestReferenceEvaluatorAiOnnxMl.test_feature_vectorizerc           
   	   C  s   t dtjd d g}t dtjd d g}tddgdgdtjdgtjdtjd}t|gd|g|g}t	|t
d	}tj| tjdd
tjdggtjdj}tjg dgtjdj}| |d|i t|}|d d|id }	t|	| d S )NrO   rP   Imputerr   r   r[   r1   imputed_value_floatsreplaced_value_floatrS   rT   rZ   rX   r   rZ   r   rX   r   r   r^   r   rc   rh   rg   nanr	   r
   r_   r`   ra   rb   rz   rM   r   r5   r   ri   r    r    r!   test_imputer_float  s&   z1TestReferenceEvaluatorAiOnnxMl.test_imputer_floatc           
   	   C  s   t dtjd d g}t dtjd d g}tddgdgdtjddgtjdtjd}t|gd	|g|g}t	|t
d
}tj| tjddtjdgddtjdggtjdj}tjg dg dgtjdj}| |d|i t|}|d d|id }	t|	| d S )NrO   rP   r   r   r   皙?r[   r   rS   rT   rZ   rX   r   )r   rZ   r   rX   r   ri   r    r    r!   test_imputer_float_2d  s&   *z4TestReferenceEvaluatorAiOnnxMl.test_imputer_float_2dc           
   	   C  s   t dtjd d g}t dtjd d g}tddgdgdtjdgtjddd}t|gd	|g|g}t|t	d
}t
j| tjg dgtjdj}tjg dgtjdj}| |d|i t|}|d d|id }	t|	| d S )NrO   rP   r   r   r   r[   )r1   imputed_value_int64sreplaced_value_int64rS   rT   )r   rZ   r   rX   r   )r   r   ry   r   rc   rh   r{   r	   r
   r_   r`   ra   rb   rz   rM   r   r5   r   ri   r    r    r!   test_imputer_int2  s&   z/TestReferenceEvaluatorAiOnnxMl.test_imputer_intc           
   	   C  s   t dtjd d g}t dtjd d g}tddgdgddg dg dd}t|gd	|g|g}t|td
}tj	
| tjddtjddggtjdj}tjg dgtjdj}| |d|i t|}|d d|id }	t|	| d S )NrO   rP   LabelEncoderr   )g      @      ?g       @      @r   rZ   r   rX   )r1   default_int64keys_floatsvalues_int64srS   rT   r   rZ   rX   rY   r[   )r   rZ   r   rX   r   )r   r   r^   ry   r   r	   r
   r_   r`   ra   rb   rc   rh   r   rg   rz   r{   rM   r   r5   r   ri   r    r    r!   test_label_encoder_float_intH  s(   	 z;TestReferenceEvaluatorAiOnnxMl.test_label_encoder_float_intc           
   	   C  s   t dtjd d g}t dtjd d g}tddgdgddg dg dd}t|gd	|g|g}t|td
}tj	
| tjg dgtjdj}tdgdgdgdgg}| j|d|idd t|}|d d|id }	| | |	  d S )NrO   rP   r   r   NONErZ   r   rX   rY   abccddd)r1   default_stringkeys_int64svalues_stringsrS   rT   r   rZ   rX   rY   r[   r   r   r   Tr@   r   )r   r   ry   STRINGr   r	   r
   r_   r`   ra   rb   rc   rh   r{   rz   rM   r   r5   assertEqualr<   ri   r    r    r!   test_label_encoder_int_string_  s(   	z<TestReferenceEvaluatorAiOnnxMl.test_label_encoder_int_stringc           
      C  s  t dtjd d g}t dtjd d g}tddgdgdtdtjdgg dtdtjdgg d	td
tjg dgd}t|gd|g|g}t|td}t	j
| tjg dgtjdj}tdgdgdgdgg}| j|d|idd t|}|d d|id }	| | |	  d S )NrO   rP   r   r   keys_tensorrY   r   values_tensorr   default_tensorr   )r1   r   r   r   rS   rT   r   r[   r   r   r   Tr   r   )r   r   ry   r   r   r   r	   r
   r_   r`   ra   rb   rc   rh   r{   rz   rM   r   r5   r   r<   )
rj   rO   rP   noderl   r>   rm   rG   rF   rH   r    r    r!   /test_label_encoder_int_string_tensor_attributesv  s4   zNTestReferenceEvaluatorAiOnnxMl.test_label_encoder_int_string_tensor_attributesc                 C  s  t  }tj|j_t  }tj|j_|jj	| t
 }d|_|j	| |}tdtjd d g}tddgdgdg dd}t|gd|g|g}t|td}tj| tjd	tjd
tjdtjd
d}	tjg dtjd
}
t|}|d d|	id }| |
 |  d S )NrO   rP   DictVectorizerr   )r   cr   z)r1   string_vocabularyrS   rT   rY   r[   rv   )r   r   )rY   rv   r   r   r   )r   r   ry   tensor_type	elem_typer   map_typekey_type
value_typeCopyFromr   nametyper   r   r	   r
   r_   r`   ra   rb   rc   rh   r{   r   r5   r   r<   )rj   r   	onnx_type
value_inforO   rP   rk   rl   r>   rm   rG   rF   rH   r    r    r!   test_dict_vectorizer  s2   

"z3TestReferenceEvaluatorAiOnnxMl.test_dict_vectorizerc           
      C  s  t dtjd d g}t dtjg d}tddgdgddg dd}t|gd	|g|g}t|td
}tj	
| tjg dg dgtjd}tjg dg dg dgg dg dg dggtjd}| j|d|idd t|}|d d|id }	| | |	  d S )NrO   rP   NNNOneHotEncoderr   rZ   rZ   r   rX   r1   zeroscats_int64srS   rT   )rw   rZ   rX   r   rZ   rX   r[   r   r   r   rZ   r   r   r   r   rZ   r   rZ   r   Tr   r   r   r   ry   r^   r   r	   r
   r_   r`   ra   rb   rc   rh   r{   rg   rM   r   r5   r   r<   ri   r    r    r!   test_one_hot_encoder_int  ,   *z7TestReferenceEvaluatorAiOnnxMl.test_one_hot_encoder_intc           
      C  s  t dtjd d g}t dtjg d}tddgdgddg dd}t|gd	|g|g}t|td
}tj	
| tg dg dg}tjg dg dg dgg dg dg dggtjd}| j|d|idd t|}|d d|id }	| | |	  d S )NrO   rP   r   r   r   rZ   )c1c2c3)r1   r   cats_stringsrS   rT   )c5r   r   )r   r   r   r   r   r   r   r[   Tr   r   )r   r   r   r^   r   r	   r
   r_   r`   ra   rb   rc   rh   rg   rM   r   r5   r   r<   ri   r    r    r!   test_one_hot_encoder_string  s,   *z:TestReferenceEvaluatorAiOnnxMl.test_one_hot_encoder_stringc           
      C  s  t dtjd d g}t dtjg d}tddgdgddg dd}t|gd	|g|g}t|td
}tj	
| tjg dg dgtjd}tjg dg dg dgg dg dg dggtjd}| j|d|idd t|}|d d|id }	| | |	  d S )NrO   rP   r   r   r   r   r   r   rS   rT   r   r[   r   r   r   Tr   r   ri   r    r    r!   test_one_hot_encoder_zeros  r   z9TestReferenceEvaluatorAiOnnxMl.test_one_hot_encoder_zerosc           
   
   C  s   t dtjd d g}t dtjd d g}tddgdgdddgdgdd	d
}t|gd|g|g}t|td}tj	| t
ddt
j}t
jdgdgdggt
jd}| j|d|idd t|}|d d|i}	t|	d |dd d S )NrO   rP   LinearRegressorr   333333?p=
ףrp   r   rZ   r1   coefficients
interceptspost_transformtargetsrS   rT   r   r   r   HzGѿ\(\333333r[   Tr   r   r   r   r]   ri   r    r    r!   test_linear_regressor  s*   
z4TestReferenceEvaluatorAiOnnxMl.test_linear_regressorc           
   
   C  s   t dtjd d g}t dtjd d g}tddgdgdg dddgdd	d
}t|gd|g|g}t|td}tj	| t
ddt
j}t
jddgddgddggt
jd}| j|d|idd t|}|d d|i}	t|	d |dd d S )NrO   rP   r   r   )r   r   r   r   rp   gffffff?r   r   r   rS   rT   r   r   r   gQ뱿r   g)\(r   g333333r[   Tr   r   r   r   r]   ri   r    r    r!   test_linear_regressor_2  s.   
z6TestReferenceEvaluatorAiOnnxMl.test_linear_regressor_2c                 C  sl  t dtjd d g}t dtjd g}t dtjd d g}tjg dtjdtjg dg dg dgtjdgtjg dtjdtjg d	g d
g dgtjdgtjg dtjdtjg dg dg dgtjdgtjg dtjdtjg dg dg dgtjdgtjg dtjdtjg dg dg dgtjdgd}dD ]}|dkrg d}g d}ng d}g d}| j|dl t	ddgddgdg d||d|d	}t
|gd |g||g}	t|	td!}
tj|
 td"d#tj}| j|
d|id$d%d& t|
}|d d|i}|| }t|d' |d' d%d( t|d |d  W d    n	1 s.w   Y  qd S ))NrO   IrP   )r   r   r   r[   )gHzG@g(\ gzG?)gq=
ףp?g=
ףp=g?)gQg{GzĿgzG @)gi\?g-\o?gfL2r?)gV+?gW}W?g(XQi?)g7ӅX?gT[r?g(5?)g#W<H?g"[Aӂ?gFA?)gme?gQ,?gej!?)gQj/혢?gw?gl`q8?)rZ   rZ   rZ   )g?̔g)@̘ܿg'I)gqVgP Ȓ9?gSKӿ)gp$?gfd{?gcK?r   LOGISTICSOFTMAXSOFTMAX_ZEROPROBIT)r   r   r   r   r  r  )V-?V-?
ףp=
?r  r  r  )HzG?r  g?)(\(\ҿ
ףp=
g(\?g(\?r  )皙@grp   r   LinearClassifierr   r   rZ   r   r   r1   classlabels_intsr   r   multi_classr   rS   rT   r   r   Tg-C6?rA   r+   rZ   r   )r   r   r^   ry   rc   rh   r{   rg   r   r   r	   r
   r_   r`   ra   rb   rd   re   rf   rM   r   r5   r   )rj   rO   InrP   expected_postpostr   r   rk   rl   r>   rm   rF   rH   rG   r    r    r!   test_linear_classifier_multi/  s   5
z;TestReferenceEvaluatorAiOnnxMl.test_linear_classifier_multic                 C  s  t dtjd d g}t dtjd g}t dtjd d g}tjddgtjdtjddgdd	ggtjdgtjddgtjdtjd
dgddggtjdgtjddgtjdtjddgddggtjdgtjddgtjdtjddgddggtjdgd}td	d
tj}dD ]h}|| }| j|dT tddgddgdddgg ddgd|d	}t|gd|g||g}	t|	td}
tj|
 t|
}|d d|i}t|d |d dd  t|d |d  W d    n1 sw   Y  qd S )!NrO   r   rP   rZ   r[   g(\#g(\#@gg@gؒh
?gZ+g?g
?,U?gmi?g6>r   g³l>gsQo?r   r   r   r   r   r   rX   )r   r   r   r   r
  r  r   r   r  r  r        $@r  rS   rT   r   r   r   r   r^   ry   rc   rh   r{   rg   rd   re   rf   r   r   r	   r
   r_   r`   ra   rb   r   r5   r   rj   rO   r  rP   r  rm   r  rG   rk   rl   r>   rF   rH   r    r    r!   test_linear_classifier_binary  sd   z<TestReferenceEvaluatorAiOnnxMl.test_linear_classifier_binaryc                 C  s  t dtjd d g}t dtjd g}t dtjd d g}tjddgtjdtjdgdggtjdgtjddgtjdtjd	gd
ggtjdgtjddgtjdtjdgdggtjdgtjddgtjdtjdgdggtjdgd}td	d
tj}dD ]g}|| }| j|dS tddgddgddgg ddgd|d	}t|gd|g||g}	t|	td}
tj|
 t|
}|d d|i}t|d |d dd t|d |d  W d    n1 sw   Y  qd S )NrO   r   rP   rZ   r   r[   gףp=
@ggd[?g6T?r   r  r   r  )r   r   r   r   r
  r  r   r  r	  r  rS   rT   r   r   r  r  r    r    r!   test_linear_classifier_unary  sR   z;TestReferenceEvaluatorAiOnnxMl.test_linear_classifier_unaryc           	   
   C  s  t d|d d g}t d|d d g}|rg d}ng d}tddgdgfi dddd	d
| dd dd dd dddddgdtd|dg ddg ddtdtjd|gd dg ddg ddg dd g d!d"g d#d$td$|t|f|}t|gd%|g|g}t|td&S )'NrO   rP   r   r  g      Y@g     @@g     @g     j@g    ;?rp   rp           g   $I?rp   TreeEnsembler1   r   	n_targetsrZ   aggregate_functionmembership_valuesnodes_missing_value_tracks_truenodes_hitratesr   r   
tree_rootsr   nodes_splitsnode_splitsr   )   ?   ?   `   nodes_featureids)r   r   r   r   nodes_modesrY   nodes_truenodeids)rZ   r   rX   rY   nodes_trueleafs)r   rZ   rZ   rZ   nodes_falsenodeids)r   rZ   rX   rw   nodes_falseleafs)rZ   rZ   r   rZ   leaf_targetidsr   r   r   r   r   r   leaf_weightsrS   rT   )	r   r   r   r   UINT8r6   r	   r
   r_   )	r"  ruleunique_targets
input_typerO   rP   weightsr   rl   r    r    r!   $_get_test_tree_ensemble_opset_latest  st   
		
 !"#'zCTestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_opset_latest
BRANCH_LEQNc                 C  s>  t dtt ddg}tdtjd d g}tdtjd d g}|r#g d}ng d}tddgdgfi d	dd
dd| d|dg ddg ddg ddg dd||ddd|d|ddg
dg ddg ddg ddg dd d!d"g d#d$g d%d&g d'd(|}t|gd)|g|g}	t|	|d*}
tj	
|
 |
S )+Nr   r   rX   rO   rP   r  r  TreeEnsembleRegressorr1   r!  rZ   r"  base_valuesr1  
rY   rX   r   r   r   r   r   rY   r   r   r-  )
r   r   r   r   r   r   r   r   r   r   r%  
r   r   r   r   r   r   r   r   r   r   r$  
r   r   r   r   r   r   r   r   r   r   r.  LEAFnodes_nodeids
r   rZ   r   rX   rY   r   rZ   r   rX   rY   nodes_treeids
r   r   r   r   r   rZ   rZ   rZ   rZ   rZ   r/  
rZ   r   r   r   r   rZ   r   rX   r   r   nodes_values)
r)  r*  r  r  r  r,  r  r+  r  r  r   r   
target_idsr4  target_nodeids)r   rX   rY   rZ   rX   rY   target_treeids)r   r   r   rZ   rZ   rZ   target_weightsrS   rT   )r   TARGET_OPSETr   r   r^   r   r	   r
   r`   ra   rb   )r"  r7  r8  r>  opsetsrO   rP   r   rk   rl   r>   r    r    r!   !_get_test_tree_ensemble_regressor5  sz   
		
'()*+-z@TestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_regressorc              	   c  s    | ]Y}|r	t jnd tjdgdgdggtjd|f|rt jndtjdgdgdggtjd|f|r3t jndtjdgdgdggtjd|f|rHt jndtjdgdgdggtjd|ffV  qd	S )
SUM9)9'v?r[   AVERAGEgPR)v?MINiO9?r   rp   N)r   rP  rc   rh   rg   rR  rS  r   r   opset5r    r    r!   	<genexpr>  s6    
z(TestReferenceEvaluatorAiOnnxMl.<genexpr>)TFc           	      C  sd   t ddt jd d }|r| jn| j}||}t|}|d d|i\}t	||dd d S )Nrx   r  
   rp   rO   r   r   )
rc   rd   re   rf   rg   r;  rO  r   r5   r   )	rj   r"  expected_resultrV  rm   model_factorymodel_protorF   r)   r    r    r!   2test_tree_ensemble_regressor_aggregation_functions  s    'zQTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_aggregation_functionsc                 c  s   | ]}|r	t jnd tjdgdgdggtjd|f|rt jndtjdgdgdggtjd|f|r3t jndtjdgdgdggtjd|f|rHt jndtjdgdgdggtjd|f|r]t jndtjdgdgdggtjd|f|rrt j	nd	tjd
gd
gd
ggtjd|ffV  qdS )r<  rQ  r[   	BRANCH_GTrp   	BRANCH_LT
BRANCH_GTE	BRANCH_EQr   
BRANCH_NEQrT  N)
r   LEQrc   rh   rg   GTLTGTEEQNEQrU  r    r    r!   rW    sF    '
c           
      C  st   t ddt jd d }|r| jn| j}|rtjnd}|||}t	|}|
d d|i\}	t|	|dd d S )	Nrx   r  rX  rp   rP  rO   r   r   )rc   rd   re   rf   rg   r;  rO  r   rP  r   r5   r   )
rj   r7  rG   rV  rm   rZ  r"  r[  rF   r)   r    r    r!   !test_tree_ensemble_regressor_rule  s    /
z@TestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_rulec                 C  s  t dtjd d g}t dtjd d g}tdttddg}tddgdgfi dddd	d
g ddg ddg ddg ddg ddg ddg ddg ddg ddddg dd g d!d"g d#d$g d%}t|gd&|g|g}t||d'}tj	
| td(d)tjd* d+ }tjd,d-gd.d/gd.d/ggtjd0}| j|d|id1d2 t|}	|	d d|i}
t|
d3 |d4d5 d S )6NrO   rP   r   r   rX   r=  r1   r!  r   r1  )rY   rX   r   r   r   r   r   rY   rX   r   r   r   r   r   r-  )r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r%  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.  )r<  r<  rB  rB  r<  rB  rB  r<  r<  rB  rB  r<  rB  rB  rC  )r   rZ   r   rX   rY   rw   r   r   rZ   r   rX   rY   rw   r   rE  )r   r   r   r   r   r   r   rZ   rZ   rZ   rZ   rZ   rZ   rZ   r/  )rZ   r   r   r   rw   r   r   rZ   r   r   r   rw   r   r   rH  )   ߌտg   ?r  r      .Ͽr  r  ri  g   `Y?r  r  rj  r  r  r   r   rI  )r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   rJ  )r   r   rX   rX   rw   rw   r   r   r   r   rX   rX   rw   rw   r   r   rK  )r   r   r   r   r   r   r   r   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rL  )r        @rp   r   g   @33?g   @33@rp   r   g    q?g   8@rp   r      ?g   @rp   r   rS   rT   rx   r  rX  rp   gir1q?gr1q@r   g      @r[   Tr   r   r   r   )r   r   r^   r   rM  r   r	   r
   r`   ra   rb   rc   rd   re   rf   rg   rh   rM   r   r5   r   )rj   rO   rP   rN  rk   rl   r>   rm   rG   rF   rH   r    r    r!   -test_tree_ensemble_regressor_2_targets_opset3  sf   )*+,<=>?@S zLTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_2_targets_opset3c                 C  s   t ddt jd d }d|d< t j|dd d f< t jdgd	gd	ggt jd
}| jddd}| j|d|idd t	|}|
d d|i}t|d |dd | dt|jd  d S )Nrx   r  rX  rp   rw   r   r   rZ       j@    @p@r[   rP  T)r8  rO   r   r   r   r   zop_type=TreeEnsembleRegressor)rc   rd   re   rf   rg   r   rh   rO  rM   r   r5   r   assertInstr	rt_nodes_)rj   rm   rG   r>   rF   rH   r    r    r!   +test_tree_ensemble_regressor_missing_opset3T  s    zJTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_missing_opset3c                 C  s   g | ]}|fqS r    r    )r   r9  r    r    r!   r   c  s    z)TestReferenceEvaluatorAiOnnxMl.<listcomp>c                 C  s   |  tjtjd|}tj|}t	d
d|d d }d|d< tj|dd d f< tjd	gd
gd
gg|d}t|}|d d|i\}t||dd d S )NTrx   r  rX  rp   rw   rn  rZ   ro  rp  r[   rO   r   r   )r;  r   rP  r   rb  r`   helpertensor_dtype_to_np_dtyperc   rd   re   rf   r   rh   r   r5   r   )rj   r9  r>   np_dtyperm   rG   sessionr)   r    r    r!   !test_tree_ensemble_missing_opset5a  s   z@TestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_missing_opset5c                 C  s   |  tjtjdtj}tj}t	d
d|d d }d|d< tj|dd d f< tjd	gd
gd
gg|d}t|}|d d|i\}t||dd d S )NFrx   r  rX  rp   rw   rn  rZ   gX9v?r   r[   rO   r   r   )r;  r   rP  r   rb  r   FLOAT16rc   float16rd   re   rf   r   rh   r   r5   r   )rj   r>   rw  rm   rG   rx  r)   r    r    r!   3test_tree_ensemble_regressor_missing_opset5_float16r  s   zRTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_missing_opset5_float16c                 C  s  t dtjd d g}t dtjd d g}tddgdgfi dddddd d	d d
d dddtjddgdtdtjdtj	gd dg ddtdtjdt
jg dt
jddg ddg ddg ddg ddg d d!td!tjd"t
jg d#t
jd}t|gd$|g|g}t|td%ttdd&gd'}tj| t|}|d dt
g d(t
jddi\}t
j|t
jd)dgd)dgdd*ggt
jd d S )+NrO   rP   r   r1   r   r!  r   r#  r$  r%  r"  rZ   r   r&  r   r.  rX   rX   r-  r   r'  )gQ	@333333?g@r[   r/  rZ   r   rZ   r0  r   rZ   rZ   r1  r   r   rX   r2  r3  )r   rZ   r   rZ   r5  r   )Q@=
ףp=(@g(\u(gףp=
@rS   r   rw   rT   )r~  333333@Qg(\?g(\@gRQ?r  r  )r   r   DOUBLEr   r   r   r   r6  r   rb  rc   rh   float64r	   r
   r   rM  r`   ra   rb   r   r5   re   testingassert_equal)rj   rO   rP   r   rl   r>   rx  outputr    r    r!   test_single_tree_ensemble  s   	

%"z8TestReferenceEvaluatorAiOnnxMl.test_single_tree_ensemblec           	      C  s  t dtjd d g}t dtjd d g}tddgdgfi dddddtjd	td	tjd
ddddtjddtjgdd dd dt	j
ddgdtdtjdtjtjtjgdg ddtdtjdtjddtjgtjddg dd g d!d"g d!d#g d$d%g d&d'td'tjd(g d)}t|gd*|g|g}t|td+}tj| t|}tdd,d-tjddgtjd.d/}tjg d0g d1g d1g d2g d2g d3gtjd}|d d|i\}tj|| d S )4NrO   rP   r   r1   r   r!  rY   r"  r#  )rv   r~  g@rv   rx   rV   r   r$  r%  r   r&  r   r.  r}  r-  r   r'     g    \Ar[   r0  r  r/  r  r2  r1  r  r3  r   r5  r   )rZ   rX    d   rS   rT   r  r  r   rZ   )rZ   r   r   r   )r   r   r   r  )r   r   r  r   )r   rX  r   r   )r   r   r^   r   r   rP  r   rc   r   r   r   r6  r   rb  MEMBERrh   rg   r	   r
   r_   r`   ra   rb   r   re   r5   r  r  )	rj   rO   rP   r   rl   r>   rx  rG   r  r    r    r!   2test_tree_ensemble_regressor_set_membership_opset5  s    !"#'$zQTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_set_membership_opset5c                 C  s   t dtjd d g}t dtjd d g}tddgdgdg d|| dddgg d	d
}t|gd|g|g}t|td}tj	| |S )NrO   rP   SVMRegressorr   )r         g    ?g    g    Ü?r  g   ?r   r   g   y?)g   rg    Ҷ?g    !?g    Rg   ̿g   пg   `?g   +g   g    |'?g   jg    ??g   /?g    kg    _?g   ?g   `j?g    hg   @g   `1¯?g   \h)r1   r   kernel_paramskernel_type
n_supportsr   rhosupport_vectorsrS   rT   
r   r   r^   r   r	   r
   r_   r`   ra   rb   )r  r  rO   rP   rk   rl   r>   r    r    r!   _get_test_svm_regressor   s&   	+z6TestReferenceEvaluatorAiOnnxMl._get_test_svm_regressorc           	   	   C  s>  t ddt jd d }g dt jdgdgdggt jd	fg d
t jdgdgdggt jd	fg dt jdgdgdggt jd	fg dt jdgdgdggt jd	fd}| D ]A\}\}}| j|d- | ||}| j	|d|idd t
|}|d d|i}t|d |dd W d    n1 sw   Y  q[d S )Nrx   r  rX  rp   )g   )?r  r   gZrLݿgDK?gGȰ?r[   )g   1?r  r   gC?ggd?g9+&|?)g    b?r  r   g@?g]7?g.t%??)g   ?r  r   gir?gvN@?g(h,?)LINEARPOLYRBFSIGMOID)kernelrO   r   r   r   )rc   rd   re   rf   rg   rh   r   r   r  rM   r   r5   r   )	rj   rm   expected_kernelr  paramsrG   r>   rF   rH   r    r    r!   test_svm_regressor4  s0    z1TestReferenceEvaluatorAiOnnxMl.test_svm_regressorc                 C  s$  t dtjd d g}t dtjd g}t dtjd d g}tddgddgfi dddg dd	g d
dg ddg ddddgdg ddg ddg ddg ddg ddg ddg dd g d!d"g d#d$| }t|gd%|g||g}t|td&ttdd'gd(}t	j
| |S ))NrO   r   rP   TreeEnsembleClassifierr1   r   	class_ids)r   r   r   r   r   r   r   class_nodeids)r   rX   rw   r   rZ   rX   rY   class_treeids)r   r   r   r   rZ   rZ   rZ   class_weights)r  g   ?r  rp   r  r  g   m?classlabels_int64sr   rZ   r1  )rY   rX   r   r   r   r   r   r   r   rY   r   r   r-  )r   r   r   r   rZ   r   r   r   r   r   r   r   r%  )r   r   r   r   r   r   r   r   r   r   r   r   r$  )r   r   r   r   r   r   r   r   r   r   r   r   r.  )r<  r<  rB  rB  r<  rB  rB  r<  rB  r<  rB  rB  rC  )r   rZ   r   rX   rY   rw   r   r   rZ   r   rX   rY   rE  )r   r   r   r   r   r   r   rZ   rZ   rZ   rZ   rZ   r/  )rZ   r   r   r   rw   r   r   rZ   r   rX   r   r   rH  )g   J?   d׿r  r  g   r  r  r  r  g    r  r  r   rS   r   rX   rT   r   r   r^   ry   r   r	   r
   r   rM  r`   ra   rb   r   rO   r  rP   rk   rl   r>   r    r    r!   )_get_test_tree_ensemble_classifier_binaryQ  sb   $%&'57zHTestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_classifier_binaryc              
   C  s  t ddd t jd }t jg dt jdt jddgdd	gdd	ggt jdft jg dt jdt jd
d
gddgddggt jdft jg dt jdt jd
d
gddgddggt jdft jg dt jdt jd
d
gddgddggt jdft jg dt jdt jddgddgddggt jdfd}| D ]K\}}| j|d9 | 	|}|dv r| 
|d|i t|}|d d|i}t|d |d dd t|d |d  W d    n1 sw   Y  qd S )Nrx   r  rw   r  r[   r   r  gRF?gV
\?rp   gSul?gVEɨ?gޭ,Yf?gԴi?gOv3ѿgOv3?r   r
  )r   rO   rZ   r   r   r   )rc   rd   re   rf   rg   rh   r{   r   r   r  rM   r   r5   r   rj   rm   r  r  rG   r>   rF   rH   r    r    r!   $test_tree_ensemble_classifier_binary  sX    %
zCTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_classifier_binaryc                 C  s$  t dtjd d g}t dtjd g}t dtjd d g}tddgddgfi dddg dd	g d
dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg d d!g d"d#| }t|gd$|g||g}t|td%ttdd&gd'}t	j
| |S )(NrO   r   rP   r  r1   r   r  )r   rZ   r   r   rZ   r   r   rZ   r   r   rZ   r   r   rZ   r   r   rZ   r   r  )r   r   r   rX   rX   rX   rY   rY   rY   rZ   rZ   rZ   rX   rX   rX   rY   rY   rY   r  )r   r   r   r   r   r   r   r   r   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   r  )g   ?r  g    ?rl  g   Q?g   Q?r  rp   r  rp   r  r  g   ?r  g   ?g   `ZZ?g   xx?g   `ZZ?r  r  r1  r?  r-  )
rZ   r   r   r   r   rZ   r   r   r   r   r%  r@  r$  rA  r.  )
r<  r<  rB  rB  rB  r<  rB  r<  rB  rB  rC  rD  rE  rF  r/  rG  rH  )
g    B?g   ӿr  r  r  g    r  g   r  r  r   rS   r   rX   rT   r  r  r    r    r!   (_get_test_tree_ensemble_classifier_multi  sb    !-./0<>zGTestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_classifier_multic              
   C  s  t ddd t jd }t jg dt jdt jg dg dg dgt jdft jg dt jdt jg d	g d
g dgt jdft jg dt jdt jg dg dg dgt jdft jg dt jdt jg dg dg dgt jdft jg dt jdt jg dg dg dgt jdfd}| D ]M\}}| j|d; | 	|}|dkr| j
|d|idd t|}|d d|i}t|d |d dd t|d |d  W d    n1 sw   Y  qd S )Nrx   r  rw   r   r[   )g]QJVU?r  guOU?)gkGq::?g0tx?g%W@?)綅bc?gt|8c?g5?)g5*p?rp   g=B͐?)g[p?g2W?gH|?)g
g?gѩ+e?g2VW?)g^)ʥq?gǹMW?g4S?)gT?gL<?gg_y"?)g.4i?g'Hlw?g&)?)g%=NN?r  r  )gw1!?r   g^2!)g8Kr?g"tgF0})gi4g{ۡa1ƿg3Mg'r   r
  r  rO   h㈵>r   rZ   r   r   )rc   rd   re   rf   rg   rh   r{   r   r   r  rM   r   r5   r   r  r    r    r!   #test_tree_ensemble_classifier_multi  sv    9
zBTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_classifier_multiTc           
      C  s   t dtjd d g}t dtjd g}t dtjd d g}|r2g dg dg dddgd	gg d
| d}nddgg dg dddgd	gdgg dddg| d
}|sT|d= |d= tddgddgfddi|}t|gd|g||g}t|td}	tj	
|	 |	S )NrO   r   rP   r   )g/?[ÿgCeg?g|?g3[?gI䢠gRjW2?ggʵɿg9\vUֿgOgH;OܿgTFd?gۯ gMbP?r  r   r      u   `@b?)g~q,gܣƿg;m$˿g좄)r  r   r  r  prob_aprob_br  r   r   rZ   )r   r   r   r   r  r  r  r  )g   @
z?r  r   r  g   c?)g   !{?g   g   o?g   g   uԿg   @I6?g   ߬?g   `tg   @M?g   ( g   @g   Gg   c?g   g   ?g   ЎĿg   X^g   @k?g    ?g   hٿg    ƿg   _g     ?g   =?rY   )
r  r   r  r  r  r  r  r  vectors_per_classr   r  r  SVMClassifierr1   r   rS   rT   r   r   r^   ry   r   r	   r
   r_   r`   ra   rb   )
r   probabilitylinearrO   r  rP   kwargsrk   rl   r>   r    r    r!   _get_test_svm_classifier_binary^  sL   &z>TestReferenceEvaluatorAiOnnxMl._get_test_svm_classifier_binaryc              
   C  s  t ddd t jd }t jg dt jdt jddgdd	gd
dggt jdft jg dt jdt jddgddgddggt jdft jg dt jdt jddgddgddggt jdft jg dt jdt jddgddgddggt jdft jg dt jdt jddgddgddggt jdfd}| D ]J\}}| j|d8 | 	|}| j
|d |id!d"d# t|}|d d |i}t|d$ |d$ d"d% t|d& |d&  W d    n1 sw   Y  qd S )'Nrx   r  rw   r  r[   gW?g$*T7{?gk}
?g,J	?gND?g%?g˵hZ?gc?g-?g9"%?g9?g_L?g5~$O?g=Զa?gJh?gZK}?g?g04?gHQ@g<KPgS!gS!?g(A&Yg(A&Y@r   r
  rO   Tr  r  rZ   r   r   rc   rd   re   rf   rg   rh   r{   r   r   r  rM   r   r5   r   r  r    r    r!   test_svm_classifier_binary  sV    %
z9TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_binaryc              	   C    t ddd t jd }t jg dt jdt jddgdd	gd
dggt jdft jg dt jdt jddgddgddggt jdft jg dt jdt jddgddgddggt jdft jg dt jdt jddgddgddggt jdfd}| D ]P\}}| j|d> | j	|dd}|dvr| j
|d|iddd  t|}|d d|i}t|d! |d! d"d# t|d$ |d$  W d    n1 sw   Y  qd S )%Nrx   r  rw   r  r[   gg?gDR?gDRg5z5@i?g5z5@ig-ͭVc?giTN?g|R?g1Z?g&o?g; ?gQ&E?gv!H?g.?gӹ?g^EF?gDo?r  r
  Fr  >   r  r   r   r   rO   Tr  r  rZ   r   r   r   r  r  r    r    r!   !test_svm_classifier_binary_noprob  sR    "z@TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_binary_noprobc           	      C  s  t ddd t jd }t j}t jg dt jdt jg dg dg dgt jdft jg dt jdt jg d	g d
g dgt jdft jg dt jdt jg dg dg dgt jdft jg dt jdt jg dg dg dgt jdft jg dt jdt j||ddg||ddg||||ggt jdfd}| D ]M\}}| j	|d; | j
|ddd}| j|d|iddd t|}|d d|i}t|d |d dd t|d |d  W d    n1 sw   Y  qd S )Nrx   r  rw   r   rX   r   r[   gT:g|S:ݿgL0?g5ڋh?gdM*kg~mͿg5|?g[?g-c}sg01"QhygIc&ѿgZ}uÿg9Վ?gMeQE?g֍wG?g-i?gXc'?geO7P?g_BF?gdp?g	i?gqTn?gWۼ?gcw?g~{ڥ?g{G?g?gOc*?g	q?gr)?g1*?g&+?g ?gps?g#jG?gSF;n?Y$9˿E\ۿW\(;oc#Ur   r
  FTr  r  rO   r  r  rZ   r   r   r   rc   rd   re   rf   rg   r   rh   r{   r   r   r  rM   r   r5   r   	rj   rm   r   r  r  rG   r>   rF   rH   r    r    r!   !test_svm_classifier_noprob_linear  sz    


9z@TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_noprob_linearc           	      C  s  t ddd t jd }t j}t jg dt jdt jg dg dg dgt jdft jg dt jdt jg d	g d
g dgt jdft jg dt jdt jg dg dg dgt jdft jg dt jdt jg dg dg dgt jdft jg dt jdt j||ddg||ddg||||ggt jdfd}| D ]M\}}| j	|d; | j
|ddd}| j|d|iddd t|}|d d|i}t|d |d dd t|d |d  W d    n1 sw   Y  qd S )Nrx   r  rw   r  r[   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r
  Tr  rO   r  r  rZ   r   r   r   r  r  r    r    r!   test_svm_classifier_linearU  sz    


9z9TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_linearc           	      C  s   t dtjd d g}t dtjd g}t dtjd d g}ddgg dg dg dd	d
gdgdg| ddgd
}|s<|d= |d= tddgddgfddi|}t|gd|g||g}t|td}tj	
| |S )NrO   r   rP   r   rZ   )g   @V?gO?gD?g)g?33@g?33@g_ff?g      @r   g	  ?g      @g_ff@g?g  `ff@rk  r   )g  Y?r  r   r  r  r  g  ~@rX   )
r  r   r  r  r  r  r  r  r   r  r  r  r  r1   r   rS   rT   r  )	r   r  rO   r  rP   r  rk   rl   r>   r    r    r!   "_get_test_svm_classifier_linear_sv  s8   zATestReferenceEvaluatorAiOnnxMl._get_test_svm_classifier_linear_svc              	   C  r  )%Nrx   r  rw   r   r[   g>?Mg>?M@g&Ng&N@gyY|EgyY|E?g(F̱?g ;7m?gsѓ2?gr߅?gvꭁ?g]T?gP@s?gU,~S?g<?g?g˙
?g1?r  r
  Fr  >   r   r   r   rO   Tr  r  rZ   r   r   r   )rc   rd   re   rf   rg   rh   r{   r   r   r  rM   r   r5   r   r  r    r    r!   +test_svm_classifier_binary_noprob_linear_sv  sL    zJTestReferenceEvaluatorAiOnnxMl.test_svm_classifier_binary_noprob_linear_svc                 C  s   t dtjd d g}t dtjd g}g dg dddg| d|d}td	dgdgfd
di|}t|gd|g|g}t|td}tj	| |S )NrO   rP   )gzt?g$sJg!7&?r  r  gM]?r   )r   r  r  r  r   r  	one_classr  r1   r   rS   rT   r  )r   r  rO   rP   r  rk   rl   r>   r    r    r!   _get_test_svm_regressor_linear  s   
z=TestReferenceEvaluatorAiOnnxMl._get_test_svm_regressor_linearc              	   C  s   t ddd t jd }dt jdgdgdggt jdfi}| D ]A\}}| j|d	/ | |}| j	|d
|iddd t
|}|d d
|i}t|d |d dd W d    n1 saw   Y  q%d S )Nrx   r  rw   r   gʾ+?g: ?g&?r[   r
  rO   Tr  r  r   r   r   rc   rd   re   rf   rg   rh   r   r   r  rM   r   r5   r   r  r    r    r!   test_svm_regressor_linear  s$    
z8TestReferenceEvaluatorAiOnnxMl.test_svm_regressor_linearc              	   C  s   t ddd t jd }dt jdgdgdggt jdfi}| D ]C\}}| j|d1 | j|dd	}| j	|d
|iddd t
|}|d d
|i}t|d |d dd W d    n1 scw   Y  q%d S )Nrx   r  rw   r   r   r[   r
  rZ   )r  rO   Tr  r  r   r   r   r  r  r    r    r!   #test_svm_regressor_linear_one_class  s$    zBTestReferenceEvaluatorAiOnnxMl.test_svm_regressor_linear_one_classc           	      C  s  t g dg dgt j}t g dg dgt j}t ddgt j}t g dt j}t g dt j}tttd	d
gdgdddd|||d
gdtd
t	j
d d ggtdt	jd d ggtd}t|}|d d
|i}| | |d   d S )N)rZ   rZ   rX   rX   rX   r   )rv   r   r   rw   r   rv   r  r  r  r  r  r  r  r  r  r  r  r   r  r   r   rY   r   rZ   r   rX   rY   rw   r   )
r   rX   rw   rY   rw   r   r   rv   r   r   TfIdfVectorizertokensoutTFr   )modemin_gram_lengthmax_gram_lengthmax_skip_countngram_countsngram_indexespool_int64stfidfrT   )rc   rh   rf   r{   rg   r
   r	   r   r   r   ry   r^   r_   r   r5   r   r<   )	rj   inputir  r  r  r  r>   oinfresr    r    r!   !test_onnxrt_tfidf_vectorizer_ints2  sF   z@TestReferenceEvaluatorAiOnnxMl.test_onnxrt_tfidf_vectorizer_intsc           	      C  s   t g dg dg}t g dg dgt j}t ddgt j}t g dt j}t g d}tttd	d
gdgdddd|||d
gdtd
t	j
d d ggtdt	jd d ggtd}t|}|d d
|i}| | |d   d S )N)i1r  i3r  r  i7)i8i6r  i5r  r  r  r  r   rY   r  )
i2r  r  i4r  r  r  r  r  r  r  r  r  r  r   )r  r  r  r  r  r  pool_stringsr  rT   )rc   rh   rf   rg   r{   r
   r	   r   r   r   ry   r^   r_   r   r5   r   r<   )	rj   r  r  r  r  r  r>   r  r  r    r    r!   $test_onnxrt_tfidf_vectorizer_stringsY  sJ   zCTestReferenceEvaluatorAiOnnxMl.test_onnxrt_tfidf_vectorizer_strings)r   r   FF)r<  FN)T)r   )C__name__
__module____qualname__staticmethodrM   r.   skipIfr   rn   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   rb  r   r^   r;  rO  r   expandr   	itertoolschainfrom_iterabler\  rh  rm  rt  r  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    r    r    r!   r#   4   s    =


$

+












W
8
/DJ#'-
c


>
@
3

F
1
M
EN
0
.
G
H.
*

'r#   __main__)	verbosity)-
__future__r   r   r   osr.   numpyrc   numpy.testingr   r   r`   r   r   r   r   onnx.helperr	   r
   r   r   r   r   onnx.referencer   ,onnx.reference.ops.aionnxml.op_tree_ensembler   r   r   intgetenvr   r   r   defsonnx_opset_versionrM  onnx_ml_opset_versionTARGET_OPSET_MLr_   r"   TestCaser#   r  mainr    r    r    r!   <module>   sX    


                _