U
    qhK                    @  sZ  d dl m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 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 d d	l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 d Z(e Z)ede(ede)gZ*dd Z+dd Z,G dd dej-Z.e/dkrVej0dd dS )    )annotationsNwraps)getenv)assert_allclose)parameterized)ONNX_MLTensorProto	TypeProtoValueInfoProto)check_model)onnx_ml_opset_versiononnx_opset_version)
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_VERSIONZ18"ORT_MAX_ML_OPSET_SUPPORTED_VERSION3    
ai.onnx.mlc                  C  s*   zdd l } ~ W n tk
r$   Y dS X dS )Nr   FT)onnxruntimeImportError)r!    r#   I/tmp/pip-unpacked-wheel-xnis5xre/onnx/test/reference_evaluator_ml_test.pyhas_onnxruntime2   s    r%   c                   s   t   fdd}|S )Nc                    s   t  std | | d S )Nzonnxruntime not installed)r%   unittestZSkipTest)argskwargsfnr#   r$   wrapper=   s    
z'skip_if_no_onnxruntime.<locals>.wrapperr   )r*   r+   r#   r)   r$   skip_if_no_onnxruntime<   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dqd3d4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drdXdY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dsdbdcZ<eje ddddde Z=edtdfdgZ>eje dddhdi Z?eje dddjdk Z@dldm ZAdndo ZBd2S )uTestReferenceEvaluatorAiOnnxMlr   Fc                 C  s  t  s
d S ddlm} t}t}| jD ]}	|	jdkr$|	j} q>q$| jD ]}	|	jdkrD|	j} q^qD| jt	ksx|tksx|tkr|d S || 
 dgd}
t| }|
d |}|d |}t|t|krtdt| dt| d	|rtt|t|nt||}t|D ]\}\}}|j|jkrJtd
|j d| d|j d|d|d|r~| | krtd| d| d| n(t||||d| d| d  dd qd S )Nr   )InferenceSession)r   zai.onnxr    ZCPUExecutionProvider)Z	providersz1onnxruntime returns a different number of output z != z (ReferenceEvaluator).zUnexpected shape z for output z (expecting z)
z
---
.zDiscrepancies for output z
expected=
z
!=
results=
z expected[0]=)actualZdesiredatolrtolerr_msg)r%   r!   r.   r   r   Zopset_importdomainversionZ
ir_versionr   ZSerializeToStringr   runlenAssertionErrorzipreversed	enumerateshapetolistr   Zravel)onxfeedsr1   r2   equalrevr.   Zonnx_domain_opsetZml_domain_opsetZopsetZortsessexpectedgotZlookiegr#   r#   r$   
_check_ortG   sb    



  &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| t	d	
d
tj}tjddddgddddgddddggtjd}| |d|i t|}|d d|id }	t||	 d S )NXYZ	Binarizerg      @r    )	thresholdr4   mlZopset_imports         r      Zdtyper   r	   FLOATr   r   r   OPSETSr   nparangereshapeastypefloat32arrayrH   r   r6   r   
selfrJ   rK   node1graphr>   xrC   rB   rD   r#   r#   r$   test_binarizer   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| t	d

dtj}tjddddgddddgddddggtjd}| |d|i t|}|d d|id }	t||	 d S )NrJ   rK   ZScaler      ?g      r    )Zscaleoffsetr4   rM   rN   rO   rP   g      @g      @g      
@g      @g      @g      @g      @g      @g      @g      @g      @g      @rT   r   rU   r^   r#   r#   r$   test_scaler   s2         


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| t	
d	d
t	j}t	jdddggt	jdj}|t	jdgt	jdd}	| ||	 t|}
|
d |	d }t|| t	jdddgdddggt	jdj}|t	jddgt	jdd}	| ||	 t|}
|
d |	d }t|| t	jdddgdddgdddgdddgdddgdddggt	jdj}|t	jddddddgt	jdd}	| ||	 t|}
|
d |	d }t|| d S )NrJ   ArK   ZArrayFeatureExtractorr    )r4   rM   rN   rO   rP   r   rR      rT   )rJ   rg   rS      	   )r   r	   rV   INT64r   r   r   rW   r   rX   rY   rZ   r[   r\   r]   Tint64rH   r   r6   r   )r_   rJ   rg   rK   r`   ra   r>   rb   rC   r?   rB   rD   r#   r#   r$   test_array_feature_extractor   sD       
"
2"z;TestReferenceEvaluatorAiOnnxMl.test_array_feature_extractorc              
   C  s*  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 ]\}}| j|d
 tddgdg|dd}t|gd|g|g}t|td}	t|	 d|i}
| j|	|
dd t|	}|d |
d }t||dd W 5 Q R X qd S )NrJ   rK   rO   rP   rS   )ZaxisZkeepdimsr   rd   )MAXZL1ZL2)normZ
Normalizerr    )rp   r4   rM   rN   ư>r1   r   )r   r	   rV   rX   rY   rZ   r[   r\   maxabssumitemssubTestr   r   r   rW   r   rH   r   r6   r   )r_   rJ   rK   rb   rC   rp   valuer`   ra   r>   r?   rB   rD   r#   r#   r$   test_normalizer   s0        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ddddgddddgd	dddg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r4t|n|}| j|d tddd tt|D dg|dd}t|gd|d t| |g}	t|	td}
t|
 dd t|d t| D }| j|
|dd t|
}|d |d }t||dd W 5 Q R X qd S ) NZX0ZX1rK   rj   )rQ   rQ   rd   r   rQ      rT   rS   rR      r   ri   rh   g      @g      @))rS   )r   rR   )rS   rS   )r   rS   )inputdimensionsZFeatureVectorizerc                 S  s   g | ]}d | qS rJ   r#   ).0rE   r#   r#   r$   
<listcomp>  s     zJTestReferenceEvaluatorAiOnnxMl.test_feature_vectorizer.<locals>.<listcomp>r    )r}   r4   rM   rN   c                 S  s   i | ]\}}d | |qS r~   r#   )r   rE   vr#   r#   r$   
<dictcomp>  s      zJTestReferenceEvaluatorAiOnnxMl.test_feature_vectorizer.<locals>.<dictcomp>rq   rr   )r   r	   rV   rX   rY   rZ   r[   r\   r]   rv   
isinstancetuplelistrw   r   ranger7   r   r   rW   r   r;   rH   r   r6   r   )r_   rJ   rK   rb   rC   r}   rx   Zattr`   ra   r>   r?   rB   rD   r#   r#   r$   test_feature_vectorizer   sJ        	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| tjdd
tjdggtjdj}tjdd
ddggtjdj}| |d|i t|}|d d|id }	t||	 d S )NrJ   rK   Imputerr    r   rT   r4   Zimputed_value_floatsZreplaced_value_floatrM   rN   rS   rQ   r   r	   rV   r   rX   r]   r\   nanr   r   rW   r   rl   rH   r   r6   r   r^   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| tjddtjdgddtjdggtjdj}tjddddgddddggtjdj}| |d|i t|}|d d|id }	t||	 d S )NrJ   rK   r   r    r   g?rT   r   rM   rN   rS   rQ   r   r^   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
| tjddddggtjdj}tjddddggtjdj}| |d|i t|}|d d|id }	t||	 d S )NrJ   rK   r   r    r   rT   )r4   Zimputed_value_int64sZreplaced_value_int64rM   rN   rS   rQ   )r   r	   rk   r   rX   r]   rm   r   r   rW   r   rl   rH   r   r6   r   r^   r#   r#   r$   test_imputer_int?  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dddd	gd
dddgd}t|gd|g|g}t|td}t| t	j
d
dt	jddggt	jdj}t	j
ddddd
ggt	jdj}| |d|i t|}|d d|id
 }	t||	 d S )NrJ   rK   LabelEncoderr    g      @      ?g       @      @r   rS   r   rQ   )r4   Zdefault_int64Zkeys_floatsZvalues_int64srM   rN   rR   rT   )r   r	   rV   rk   r   r   r   rW   r   rX   r]   r   r\   rl   rm   rH   r   r6   r   r^   r#   r#   r$   test_label_encoder_float_intU  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dddd	gd
dddgd}t|gd|g|g}t|td}t| t	j
dddd	g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 )NrJ   rK   r   r    NONErS   r   rQ   rR   abccddd)r4   Zdefault_stringZkeys_int64sZvalues_stringsrM   rN   r   rT   Tr@   )r   r	   rk   STRINGr   r   r   rW   r   rX   r]   rm   rl   rH   r   r6   assertEqualr=   r^   r#   r#   r$   test_label_encoder_int_stringl  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ddd	dgtd
tjdgddddgtdtjg dgd}t|gd|g|g}t|td}t	| t
jddd	dg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 )NrJ   rK   r   r    keys_tensorrR   rS   r   rQ   values_tensorr   r   r   r   default_tensorr   )r4   r   r   r   rM   rN   r   rT   Tr   )r   r	   rk   r   r   r   r   r   rW   r   rX   r]   rm   rl   rH   r   r6   r   r=   )
r_   rJ   rK   nodera   modelrb   rC   rB   rD   r#   r#   r$   /test_label_encoder_int_string_tensor_attributes  sF       
   
   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ddddgd	}t|gd
|g|g}t|td}t| tjdtjdtjdtjdd}	tjddddgtjd}
t|}|d d|	id }| |
 |  d S )NrJ   rK   ZDictVectorizerr    r   cr   z)r4   Zstring_vocabularyrM   rN   rR   rT   rh   )r   r   r   )r
   r	   rk   Ztensor_typeZ	elem_typer   Zmap_typeZkey_type
value_typeZCopyFromr   nametyper   r   r   r   rW   r   rX   r]   rm   r   r6   r   r=   )r_   r   Z	onnx_typeZ
value_inforJ   rK   r`   ra   r>   rb   rC   rB   rD   r#   r#   r$   test_dict_vectorizer  s2    


"z3TestReferenceEvaluatorAiOnnxMl.test_dict_vectorizerc           
   	   C  s  t dtjd d g}t dtjd d d g}tddgdgdddddgd}t|gd	|g|g}t|td
}t| t	j
dddgdddggt	jd}t	j
dddgdddgdddggdddgdddgdddgggt	jd}| j|d|idd t|}|d d|id }	| | |	  d S )NrJ   rK   OneHotEncoderr    rS   r   rQ   r4   zerosZcats_int64srM   rN   ri   rT   r   Tr   r   r	   rk   rV   r   r   r   rW   r   rX   r]   rm   r\   rH   r   r6   r   r=   r^   r#   r#   r$   test_one_hot_encoder_int  s,     6z7TestReferenceEvaluatorAiOnnxMl.test_one_hot_encoder_intc           
   	   C  s  t dtjd d g}t dtjd d d g}tddgdgdddddgd	}t|gd
|g|g}t|td}t| t	
dddgdddgg}t	j
dddgdddgdddggdddgdddgdddgggt	jd}| j|d|idd t|}|d d|id }	| | |	  d S )NrJ   rK   r   r    rS   Zc1c2c3)r4   r   Zcats_stringsrM   rN   Zc5r   rT   Tr   )r   r	   r   rV   r   r   r   rW   r   rX   r]   r\   rH   r   r6   r   r=   r^   r#   r#   r$   test_one_hot_encoder_string  s,    6z:TestReferenceEvaluatorAiOnnxMl.test_one_hot_encoder_stringc           
   	   C  s  t dtjd d g}t dtjd d d g}tddgdgdddddgd	}t|gd
|g|g}t|td}t| t	j
dddgdddggt	jd}t	j
dddgdddgdddggdddgdddgdddgggt	jd}| j|d|idd t|}|d d|id }	| | |	  d S )NrJ   rK   r   r    r   rS   r   rQ   r   rM   rN   rT   Tr   r   r^   r#   r#   r$   test_one_hot_encoder_zeros  s,     6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| 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 )NrJ   rK   LinearRegressorr    333333?p=
ףrd   r   rS   r4   coefficients
interceptspost_transformtargetsrM   rN   rz   r   r   HzGѿ\(\333333rT   Tr   r   rq   rr   rU   r^   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ddddgddgd	d
d}t|gd|g|g}t|td}t| 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 )NrJ   rK   r   r    r   r   rd   gffffff?r   r   r   rM   rN   rz   r   r   gQ뱿r   g)\(r   g333333rT   Tr   r   rq   rr   rU   r^   r#   r#   r$   test_linear_regressor_2"  s0    

 z6TestReferenceEvaluatorAiOnnxMl.test_linear_regressor_2c                 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dgtjdtjddd	gd
ddgdddggtjdgtjdddgtjdtjdddgdddgdddggtjdgtjdddgtjdtjdddgdddgdd d!ggtjdgtjdddgtjdtjdddgdddgdd d!ggtjdgtjd"d"d"gtjdtjd#d$d%gd&d'd(gd)d*d+ggtjdgd,}d-D ]$}|d.krd/d0d1d/d0d1g}d2d2d3g}nd4d5d6d7d8d1g}d9d:d;g}| j|d< t	d=dgddgd>dd"dg||d|d?	}t
|gd@|g||g}	t|	tdA}
t|
 tdBdCtj}| j|
d|idDdEdF t|
}|d d|i}|| }t|d" |d" dEdG t|d |d  W 5 Q R X qjd S )HNrJ   IrK   r   r   rT   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?rS   g?̔g)@̘ܿg'IgqVgP Ȓ9?gSKӿgp$?gfd{?gcK?r   LOGISTICSOFTMAXSOFTMAX_ZEROPROBIT)r   r   r   r   r   r   gV-?gV-?g
ףp=
?gHzG?g?(\(\ҿ
ףp=
g(\?g(\?皙@grd   r   LinearClassifierr    r4   classlabels_intsr   r   Zmulti_classr   rM   rN   rz   r   Tg-C6?rA   r1   rr   )r   r	   rV   rk   rX   r]   rm   r\   rw   r   r   r   rW   r   rY   rZ   r[   rH   r   r6   r   )r_   rJ   InrK   expected_postpostr   r   r`   ra   r>   rb   rB   rD   rC   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 ]}|| }| j|d tddgddgdddgdddgdgd|d	}t|gd|g||g}	t|	td }
t|
 t|
}|d d|i}t|d |d d!d" t|d |d  W 5 Q R X qd S )#NrJ   r   rK   rS   rT   g(\#g(\#@gg@gؒh
?gZ+g?g
?,U?gmi?g6>r   g³l>gsQo?r   r   r   r   rz   r   rQ   )r   r   r   r   r   r   r    r   r   r   r         $@r   rM   rN   rq   rr   r   r	   rV   rk   rX   r]   rm   r\   rY   rZ   r[   rw   r   r   r   rW   r   r   r6   r   r_   rJ   r   rK   r   rb   r   rC   r`   ra   r>   rB   rD   r#   r#   r$   test_linear_classifier_binary  s^    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 ]}|| }| j|d tddgddgddgdddgdgd|d	}t|gd|g||g}	t|	td}
t|
 t|
}|d d|i}t|d |d dd t|d |d  W 5 Q R X qd S )NrJ   r   rK   rS   r   rT   gףp=
@ggd[?g6T?r   r   rz   r   )r   r   r   r   r   r   r    r   r   r   r   r   rM   rN   rq   rr   r   r   r#   r#   r$   test_linear_classifier_unary  sL    z;TestReferenceEvaluatorAiOnnxMl.test_linear_classifier_unaryc           
      C  s
  t d|d d g}t d|d d g}|r6ddddddg}nd	d
d
ddd
g}tddgdgdd| d d d dddgtd|dddddgddddgtdtjd|gd ddddgddddgddddgddddgddddddgtd|t|f|d}t|gd|g|g}t|td}	|	S ) NrJ   rK   r   r         Y@     @@     @     j@    ;?rd              $I?TreeEnsembler    rS   r   r   Znode_splitsr|      ?   ?   `   nodes_modesrR   rQ   ri   leaf_weights)r4   	n_targetsaggregate_functionmembership_valuesnodes_missing_value_tracks_truenodes_hitratesr   
tree_rootsnodes_splitsnodes_featureidsr   nodes_truenodeidsnodes_trueleafsnodes_falsenodeidsnodes_falseleafsleaf_targetidsr   rM   rN   )	r   r   r   r	   UINT8r7   r   r   rW   )
r   ruleunique_targets
input_typerJ   rK   weightsr   ra   r   r#   r#   r$   $_get_test_tree_ensemble_opset_latest  sz    





   '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}|rNdddd	d
dg}nddddddg}tddgdgdd| |ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
||ddd|d|ddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
dddddddgddddddgddddddg|d}t|gd|g|g}	t|	|d}
t|
 |
S )Nr   r    rQ   rJ   rK   r   r   r   r   r   r   r   rd   r   r   TreeEnsembleRegressorrS   rR   r   r   LEAFr   r   r   r   r   )r4   r   r   base_valuesr   r   r   r   r   nodes_nodeidsnodes_treeidsr   nodes_valuesr   
target_idstarget_nodeidstarget_treeidstarget_weightsrM   rN   )	r   TARGET_OPSETr   r	   rV   r   r   r   r   )r   r   r   r   opsetsrJ   rK   r   r`   ra   r>   r#   r#   r$   !_get_test_tree_ensemble_regressorC  s    
-z@TestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_regressorc              	   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|rdt jndtjdgdgdggtjd|f|rt jndtjdgdgdggtjd|ffV  qd	S )
SUM9)9'v?rT   AVERAGEgPR)v?MINiO9?ro   rd   N)r   r
  rX   r]   r\   r  r  ro   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 )Nrj   r   
   rd   rJ   rq   rr   )
rX   rY   rZ   r[   r\   r   r	  r   r6   r   )	r_   r   Zexpected_resultr  rb   model_factorymodel_protorB   r0   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|rft jndtjdgdgdggtjd|f|rt jndtjdgdgdggtjd|f|rt jndtjdgdgdggtjd|f|rt j	nd	tjd
gd
gd
ggtjd|ffV  qdS )r   r  rT   Z	BRANCH_GTrd   Z	BRANCH_LTZ
BRANCH_GTEZ	BRANCH_EQr   Z
BRANCH_NEQr  N)
r   LEQrX   r]   r\   GTLTZGTEZEQZNEQr  r#   r#   r$   r    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 )	Nrj   r   r  rd   r
  rJ   rq   rr   )rX   rY   rZ   r[   r\   r   r	  r   r
  r   r6   r   )
r_   r   rC   r  rb   r  r   r  rB   r0   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ddddd	d	d
d	d	ddd	d	d
d	d	gd	dd	d	dd	d	d	dd	d	dd	d	gddddddddddddddgd	d	d	d	d	d	d	d	d	d	d	d	d	d	gddddddddddddddgd	dddddd
d	dddddd
gd	d	d	d	d	d	d	dddddddgddd	d	dd	d	ddd	d	dd	d	gddddddddddddddgdd	dd	dd	dd	dd	dd	dd	dd	dgddddddd
d
ddddddd
d
gd	d	d	d	d	d	d	d	ddddddddgddddddddddddddddgd}t|gd |g|g}t||d!}t| t	
d"d#t	jd$ d }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 )-NrJ   rK   r   r    rQ   r   r   rR   r   rz   rS   r   r   r   ri   g   ߌտg   ?r   g    .Ͽg   `Y?r         @rd   r   g   @33?g   @33@g    q?g   8@   ?g   @)r4   r   r   r   r   r   r   r   r  r   r  r   r  r  r  r  rM   rN   rj   r   r  gir1q?gr1q@g      @rT   Tr   rq   rr   )r   r	   rV   r   r  r   r   r   r   rX   rY   rZ   r[   r\   r]   rH   r   r6   r   )r_   rJ   rK   r  r`   ra   r>   rb   rC   rB   rD   r#   r#   r$   -test_tree_ensemble_regressor_2_targets_opset3  s    """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 )Nrj   r   r  rd   ri   r   r   rS       j@    @p@rT   r
  T)r   rJ   r   r   rq   rr   zop_type=TreeEnsembleRegressor)rX   rY   rZ   r[   r\   r   r]   r	  rH   r   r6   r   ZassertInstrZ	rt_nodes_)r_   rb   rC   r>   rB   rD   r#   r#   r$   +test_tree_ensemble_regressor_missing_opset3b  s     zJTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_missing_opset3c                 C  s   g | ]
}|fqS r#   r#   )r   r   r#   r#   r$   r   q  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 )NTrj   r   r  rd   ri   r  rS   r  r  rT   rJ   rq   rr   )r   r   r
  r   r  onnxhelperZtensor_dtype_to_np_dtyperX   rY   rZ   r[   r   r]   r   r6   r   )r_   r   r   np_dtyperb   rC   sessionr0   r#   r#   r$   !test_tree_ensemble_missing_opset5o  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 )NFrj   r   r  rd   ri   r  rS   gX9v?r   rT   rJ   rq   rr   )r   r   r
  r   r  r	   ZFLOAT16rX   Zfloat16rY   rZ   r[   r   r]   r   r6   r   )r_   r   r$  rb   rC   r%  r0   r#   r#   r$   3test_tree_ensemble_regressor_missing_opset5_float16  s       zRTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_regressor_missing_opset5_float16c                 C  st  t dtjd d g}t dtjd d g}tddgdgddd d d dtjdgtdtjd	tj	gd
 dddgtdtjd	t
jdddgt
jddddgdddgddd
gdddgddddgtdtjdt
jddddgt
jdd}t|gd|g|g}t|tdttddgd}t| t|}|d dt
ddddddgt
jd
di\}t
j|t
jddgddgddggt
jd d S ) NrJ   rK   r   r    r   rS   r   r   rQ   rQ   r   gQ	@333333?g@rT   r   r|   gQ@g=
ףp=(@g(\u(gףp=
@)r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   r   ri   rN   333333@Qg(\?g(\@gRQ?)r   r	   DOUBLEr   r   r   r   r   r   r  rX   r]   Zfloat64r   r   r   r  r   r   r6   rZ   testingassert_equal)r_   rJ   rK   r   ra   r   r%  outputr#   r#   r$   test_single_tree_ensemble  sz    

%    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ddtjtdtjddd	d
dtjddtjgd d t	j
dgtdtjdtjtjtjgdddgtdtjdtjddtjgtjddddgdddgdddgdddgddddgtdtjdddddgd}t|gd|g|g}t|td}t| t|}tdd d!tjddgtjd"d}tjddddgddddgddddgddddgddddgddddggtjd}|d d|i\}tj|| d S )#NrJ   rK   r   r    rR   r   )rh   r)  g@rh   rj   rO   r{   r   r   r(  r      g    \ArT   rS   r   rQ   r   r|   r  i  d   )r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   rN   r*  r+  r   )r   r	   rV   r   r   r
  r   rX   r   r   r   r   r   r  ZMEMBERr]   r\   r   r   rW   r   r   rZ   r6   r-  r.  )	r_   rJ   rK   r   ra   r   r%  rC   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ddddd	dd
g|| dddgddddddddddddddddddd d!d"gd#}t|gd$|g|g}t|td%}t| |S )&NrJ   rK   SVMRegressorr    r         g    ?g    g    Ü?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)r4   r   kernel_paramskernel_type
n_supportsr   rhosupport_vectorsrM   rN   r   r	   rV   r   r   r   rW   r   )r7  r6  rJ   rK   r`   ra   r>   r#   r#   r$   _get_test_svm_regressor  s^    	+z6TestReferenceEvaluatorAiOnnxMl._get_test_svm_regressorc           	   
   C  s2  t ddt jd d }dddgt jdgd	gd
ggt jdfdddgt jdgdgdggt jdfdddgt jdgdgdggt jdfdddgt jdgdgdggt jdfd}| D ]n\}\}}| j|dP | ||}| j	|d|idd t
|}|d d|i}t||d dd W 5 Q R X qd S )Nrj   r   r  rd   g   )?r   r   gZrLݿgDK?gGȰ?rT   g   1?gC?ggd?g9+&|?g    b?g@?g]7?g.t%??g   ?gir?gvN@?g(h,?)LINEARZPOLYRBFZSIGMOID)kernelrJ   rq   rr   r   )rX   rY   rZ   r[   r\   r]   rv   rw   r<  rH   r   r6   r   )	r_   rb   Zexpected_kernelr?  paramsrC   r>   rB   rD   r#   r#   r$   test_svm_regressorB  s*     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ddddddddgddd	d
dddgdddddddgdddddddgddgddddd
dddddddgddddddddddddgddddddddddddgddddddddddddgddddddddddddgdddddd	d
dddddgddddddddddddgddddd	dddddddgddddddddddddg| d}t|gd|g||g}t|tdttddgd}t	| |S )NrJ   r   rK   TreeEnsembleClassifierr    r   r   rQ   ri   rz   rS   rR   r   g   ?rd   g   m?r   r   r   g   J?g   d׿g   g    r4   Z	class_idsZclass_nodeidsZclass_treeidsZclass_weightsZclasslabels_int64sr   r   r   r   r   r   r  r   r  r   rM   r   rN   
r   r	   rV   rk   r   r   r   r   r  r   r   rJ   r   rK   r`   ra   r>   r#   r#   r$   )_get_test_tree_ensemble_classifier_binary_  s    	7zHTestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_classifier_binaryc              
   C  s  t ddd t jd }t jdddgt jdt jddgd	d
gd	d
ggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdfd}| D ]\}}| j|dj | 	|}|dkrv| 
|d|i t|}|d d|i}t|d |d dd t|d |d  W 5 Q R X q<d S )Nrj   r   ri   r   rS   rT   r   r   gRF?gV
\?rd   gSul?gVEɨ?gޭ,Yf?gԴi?gOv3ѿgOv3?r   r   )r   rJ   rq   rr   )rX   rY   rZ   r[   r\   r]   rm   rv   rw   rF  rH   r   r6   r   r_   rb   r   r   rC   r>   rB   rD   r#   r#   r$   $test_tree_ensemble_classifier_binary  sR     %

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dddddddddddddddddddgdddd	d	d	d
d
d
dddd	d	d	d
d
d
gddddddddddddddddddgddddddddddddddddddgdddgd
d	dddddd
ddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
dddd	d
dddd	d
g
ddddddddddg
dddddddd	ddg
ddddddddddg
| d}t|gd|g||g}t|td ttdd	gd!}t	| |S )"NrJ   r   rK   rB  r    r   rS   r   rQ   rR   g   ?r   g    ?r  g   Q?g   Q?rd   g   ?g   ?g   `ZZ?g   xx?g   `ZZ?r   r   r   g    B?g   ӿg    g   rC  rM   r   rN   rD  rE  r#   r#   r$   (_get_test_tree_ensemble_classifier_multi  s    &&&>zGTestReferenceEvaluatorAiOnnxMl._get_test_tree_ensemble_classifier_multic                 C  s  t ddd t jd }t jdddgt jdt jddd	gd
ddgdddggt jdft jdddgt jdt jdddgdddgdddggt jdft jdddgt jdt jdddgdddgdd d!ggt jdft jdddgt jdt jd"ddgdddgdd d!ggt jdft jdddgt jdt jd#dd$gd%d&d'gd(d)d*ggt jdfd+}| D ]\}}| j|d,n | 	|}|d-kr| j
|d.|id/d0 t|}|d d.|i}t|d |d d1d0 t|d |d  W 5 Q R X qZd S )2Nrj   r   ri   r   rS   rT   g]QJVU?r   guOU?gkGq::?g0tx?g%W@?gbc?gt|8c?g5?g5*p?rd   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?gw1!?g^2!g8Kr?g"tgF0}gi4g{ۡa1ƿg3Mg'r   r   r   rJ   h㈵>rr   rq   )rX   rY   rZ   r[   r\   r]   rm   rv   rw   rI  rH   r   r6   r   rG  r#   r#   r$   #test_tree_ensemble_classifier_multi&  sp     9

zBTestReferenceEvaluatorAiOnnxMl.test_tree_ensemble_classifier_multiTc           
      C  sN  t dtjd d g}t dtjd g}t dtjd d g}|rddddgdd	d
dddddddddgdddgddgdgddddg| d}nnddgddddd d d d gd!ddgd"dgdgd#gd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;gd<d<g| d=
}|s|d>= |d?= td@dgddgfdAdBi|}t|gdC|g||g}t|tdD}	t|	 |	S )ENrJ   r   rK   r   rS   r   rQ   g/?[ÿgCeg?g|?g3[?gI䢠gRjW2?ggʵɿg9\vUֿgOgH;OܿgTFd?gۯ MbP?r   r   r=      u   `@b?g~q,gܣƿg;m$˿g좄)r   r   r6  r7  prob_aprob_br9  r   r   r5  g   @
z?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   =?rR   )
r   r   r6  r7  rO  rP  r9  r:  vectors_per_classr   rO  rP  SVMClassifierr4   r    rM   rN   	r   r	   rV   rk   r   r   r   rW   r   )
r   probabilitylinearrJ   r   rK   r(   r`   ra   r>   r#   r#   r$   _get_test_svm_classifier_binaryl  s    

&  z>TestReferenceEvaluatorAiOnnxMl._get_test_svm_classifier_binaryc              
   C  s  t ddd t jd }t jdddgt jdt jddgd	d
gddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdfd}| D ]\}}| j|d f | 	|}| j
|d!|id"d#d$ t|}|d d!|i}t|d |d d#d% t|d |d  W 5 Q R X q<d S )&Nrj   r   ri   r   rS   rT   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   rJ   TrJ  r   rr   rX   rY   rZ   r[   r\   r]   rm   rv   rw   rV  rH   r   r6   r   rG  r#   r#   r$   test_svm_classifier_binary  sP     %
z9TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_binaryc              
   C  s  t ddd t jd }t jdddgt jdt jddgd	d
gddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdfd}| D ]\}}| j|dt | j	|dd}|dkrJ| j
|d|idd d! t|}|d d|i}t|d |d d"d# t|d |d  W 5 Q R X qd S )$Nrj   r   ri   r   rS   rT   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rT  >   r   r   r   r   rJ   TrJ  r   rq   rr   rW  rG  r#   r#   r$   !test_svm_classifier_binary_noprob  sL     "
z@TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_binary_noprobc           	      C  s  t ddd t jd }t j}t jdddgt jdt jdd	d
dgddddgddddggt jdft jdddgt jdt jddddgddddgddddggt jdft jdddgt jdt jd d!d"d#gd$d%d&d'gd(d)d*d+ggt jdft jdddgt jdt jd d!d"d#gd$d%d&d'gd(d)d*d+ggt jdft jdddgt jdt j||d,d-g||d.d/g||||ggt jdfd0}| D ]\}}| j	|d1l | j
|d2d3d4}| j|d5|id3d6d7 t|}|d d5|i}t|d8 |d8 d9d: t|d |d  W 5 Q R X q~d S );Nrj   r   ri   r   rQ   r   rT   熎T:|S:ݿL0?5ڋh?dM*k~mͿ5|?等[?-c}s01"QhyIc&ѿZ}uÿ9Վ?MeQE?֍wG?-i?Xc'?eO7P?_BF?dp?	i?qTn?Wۼ?cw?~{ڥ?{G??Oc*?	q?r)?1*?&+? ?ps?#jG?SF;n?Y$9˿E\ۿW\(;oc#Ur   r   FTrT  rU  rJ   rJ  r   rS   rq   rr   rX   rY   rZ   r[   r\   r   r]   rm   rv   rw   rV  rH   r   r6   r   	r_   rb   r   r   r   rC   r>   rB   rD   r#   r#   r$   !test_svm_classifier_noprob_linear  sx     














9  z@TestReferenceEvaluatorAiOnnxMl.test_svm_classifier_noprob_linearc           	      C  s  t ddd t jd }t j}t jdddgt jdt jdd	d
dgddddgddddggt jdft jdddgt jdt jddddgddddgddddggt jdft jdddgt jdt jd d!d"d#gd$d%d&d'gd(d)d*d+ggt jdft jdddgt jdt jd d!d"d#gd$d%d&d'gd(d)d*d+ggt jdft jdddgt jdt j||d,d-g||d.d/g||||ggt jdfd0}| D ]\}}| j	|d1l | j
|d2d2d3}| j|d4|id2d5d6 t|}|d d4|i}t|d7 |d7 d8d9 t|d |d  W 5 Q R X q~d S ):Nrj   r   ri   r   rQ   r   rT   r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r   r   Tr  rJ   rJ  r   rS   rq   rr   r  r  r#   r#   r$   test_svm_classifier_linearc  sx     














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dddd	gd
dddddddddddgdddg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| |S )$NrJ   r   rK   r   rS   g   @V?gO?gD?gg?33@g?33@g_ff?g      @r   g	  ?g      @g_ff@g?g  `ff@r  g  Y?r   r=  rM  rN  g  ~@rQ   )
r   r   r:  r6  r7  rO  rP  r9  r   rQ  rO  rP  rR  r4   r    rM   rN   rS  )	r   rT  rJ   r   rK   r(   r`   ra   r>   r#   r#   r$   "_get_test_svm_classifier_linear_sv  s\      zATestReferenceEvaluatorAiOnnxMl._get_test_svm_classifier_linear_svc              
   C  s  t ddd t jd }t jdddgt jdt jddgdd	gd
dggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdft jdddgt jdt jddgddgddggt jdfd}| D ]\}}| j|dt | j	|dd}|dkrJ| j
|d|iddd  t|}|d d|i}t|d! |d! d"d# t|d |d  W 5 Q R X qd S )$Nrj   r   ri   r   rT   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   FrY  >   r   r   r   rJ   TrJ  r   rS   rq   rr   )rX   rY   rZ   r[   r\   r]   rm   rv   rw   r  rH   r   r6   r   rG  r#   r#   r$   +test_svm_classifier_binary_noprob_linear_sv  sF     
zJTestReferenceEvaluatorAiOnnxMl.test_svm_classifier_binary_noprob_linear_svc                 C  s   t dtjd d g}t dtjd g}dddgdddgd	d
g| d|d}tddgdgfddi|}t|gd|g|g}t|td}t| |S )NrJ   rK   gzt?g$sJg!7&?rL  r   r   r=  gM]?r   )r   r6  r7  r9  r   r8  	one_classr4  r4   r    rM   rN   r;  )r   r  rJ   rK   r(   r`   ra   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 ]n\}}| j|d	T | |}| j	|d
|iddd t
|}|d d
|i}t|d |d dd W 5 Q R X qJd S )Nrj   r   ri   r   gʾ+?g: ?g&?rT   r   rJ   TrJ  r   r   rq   rr   rX   rY   rZ   r[   r\   r]   rv   rw   r  rH   r   r6   r   rG  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 ]r\}}| j|dX | j|dd	}| j	|d
|iddd t
|}|d d
|i}t|d |d dd W 5 Q R X qJd S )Nrj   r   ri   r   r   rT   r   rS   )r  rJ   TrJ  r   r   rq   rr   r  rG  r#   r#   r$   #test_svm_regressor_linear_one_class-  s     zBTestReferenceEvaluatorAiOnnxMl.test_svm_regressor_linear_one_classc           	      C  sD  t ddddddgddddddggt j}t dddddddgdddddddggt j}t d	d
gt j}t d	dddd
ddgt j}t dddd
ddddddg
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 )NrS   rQ   r{   rh   rz   ri   r   r   r   rR   r   TfIdfVectorizertokensoutTF)modemin_gram_lengthmax_gram_lengthmax_skip_countngram_countsngram_indexespool_int64stfidfrN   )rX   r]   r[   rm   r\   r   r   r   r   r	   rk   rV   rW   r   r6   r   r=   )	r_   inputir/  r  r  r  r   oinfresr#   r#   r$   !test_onnxrt_tfidf_vectorizer_ints@  sF    ." z@TestReferenceEvaluatorAiOnnxMl.test_onnxrt_tfidf_vectorizer_intsc           	      C  s4  t ddddddgddddddgg}t dddddddgdddddddggt j}t d	d
gt j}t d	dddd
ddgt j}t ddddddddddg
}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i1Zi3Zi7i8Zi6Zi5r   r   r   rR   rS   r   rQ   ri   rz   i2i4r  r  r  r  )r  r  r  r  r  r  pool_stringsr  rN   )rX   r]   r[   r\   rm   r   r   r   r   r	   rk   rV   rW   r   r6   r   r=   )	r_   r  r/  r  r  r  r   r  r  r#   r#   r$   $test_onnxrt_tfidf_vectorizer_stringsg  sJ    " zCTestReferenceEvaluatorAiOnnxMl.test_onnxrt_tfidf_vectorizer_strings)r   r   FF)r   FN)TF)T)r   )C__name__
__module____qualname__staticmethodrH   r&   ZskipIfr   rc   rf   rn   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	   rV   r   r	  r   expandr   	itertoolschainfrom_iterabler  r  r  r!  r,  r&  r'  r0  r3  r<  rA  rF  rH  rI  rK  rV  rX  rZ  r  r  r  r  r  r  r  r  r  r#   r#   r#   r$   r-   F   s   8


$

+












W
8
/E     J#'-
c


>
@
3

F
1
M
EN
0
.
G
H.
*

'r-   __main__)	verbosity)1
__future__r   r  r&   	functoolsr   osr   ZnumpyrX   Znumpy.testingr   r   r"  r   r	   r
   r   Zonnx.checkerr   Z	onnx.defsr   r   Zonnx.helperr   r   r   r   r   r   Zonnx.referencer   Z,onnx.reference.ops.aionnxml.op_tree_ensembler   r   r   intr   r   r   r  ZTARGET_OPSET_MLrW   r%   r,   ZTestCaser-   r  mainr#   r#   r#   r$   <module>   sZ    


                [
