§
    1�Åjñ  ã                  ót   — d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 dej
        fd„Z G d„ de¦  «        ZdS )	é    )ÚannotationsN)ÚBase)Úexpectéÿÿÿÿc                óø  — t          j        | ¦  «        }t          |j        ¦  «        }t          j        |¦  «        }|dk     r||dz   z  }|j        d|…         }|j        ||…         }t          j        |dt          |¦  «        z  |j        z   dt          |¦  «        z  z   ¦  «        }	t          j        |dk     ||z   |¦  «        }t          j        |g |¢d‘|¢R ¦  «        }t          j        |	|k    |¬¦  «        S )z/Compute one hot from indices at a specific axisr   é   )r   ©Údtype)ÚnpÚasarrayÚlenÚshapeÚarangeÚreshapeÚwhere)
ÚindicesÚdepthÚaxisr
   ÚvaluesÚrankÚdepth_rangeÚlsÚrsÚtargetss
             úSC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/onehot.pyÚone_hotr      só   € åŒZ˜Ñ Ô €FÝˆvŒ|ÑÔ€DÝ”)˜EÑ"Ô"€KØˆa‚x€xØ��q‘ÑˆØ	Œ�a˜�fÔ	€BØ	Œ�d˜4�iÔ	 €BÝŒjØ�T�C ™GœG‘^ kÔ&7Ñ7¸$ÅÀRÁÄ¹.ÑHñô €Gõ ŒX�f˜q’j &¨5¡.°&Ñ9Ô9€FÝŒZ˜  "  a ¨"  Ñ.Ô.€FÝŒ:�g Ò'¨uÐ5Ñ5Ô5Ð5ó    c                  óž   — e Zd Zed
d„¦   «         Zed
d„¦   «         Zed
d„¦   «         Zed
d„¦   «         Zed
d„¦   «         Zed
d„¦   «         Z	d	S )ÚOneHotÚreturnÚNonec                 ót  — d} d}t           j        }t          j                             dg d¢dg¬¦  «        }t          j        g d¢t           j        ¬¦  «        }t          j        d	¦  «        }t          j        || g|¬¦  «        }t          |||¬¦  «        }|| |z
  z  |z   }t          ||||g|gd
¬¦  «         d S )Né   é   r   ©r   r   r   Úy)ÚinputsÚoutputs)r   é   é   r	   é   Útest_onehot_without_axis©r'   r(   Úname)
r   Úint32ÚonnxÚhelperÚ	make_nodeÚarrayÚint64Úfloat32r   r   )Úon_valueÚ	off_valueÚoutput_typeÚnoder   r   r   r&   s           r   Úexport_without_axiszOneHot.export_without_axis!   sß   € àˆØˆ	Ý”hˆÝŒ{×$Ò$ØÐ;Ð;Ð;ÀcÀUð %ñ 
ô 
ˆõ ”(˜9˜9˜9­B¬HÐ5Ñ5Ô5ˆÝ”
˜2‘”ˆÝ”˜9 hÐ/°{ÐCÑCÔCˆÝ�G˜U¨+Ð6Ñ6Ô6ˆØ�˜IÑ%Ñ&¨Ñ2ˆÝØØ˜U FÐ+Ø�CØ+ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó„  — d} d}d}t           j        }t          j                             dg d¢dg| ¬¦  «        }t          j        ddgdd	ggt           j        ¬
¦  «        }t          j        d¦  «        }t          j        ||g|¬
¦  «        }t          ||| |¬¦  «        }|||z
  z  |z   }t          ||||g|gd¬¦  «         d S )Nr   é   r   r%   r&   ©r'   r(   r   é	   r$   é   r	   é
   ©r   r
   Útest_onehot_with_axisr-   ©r   r5   r0   r1   r2   r3   r   r   ©	Ú	axisValuer6   r7   r8   r9   r   r   r   r&   s	            r   Úexport_with_axiszOneHot.export_with_axis5   só   € àˆ	ØˆØˆ	Ý”jˆÝŒ{×$Ò$ØØ1Ð1Ð1Ø�EØð	 %ñ 
ô 
ˆõ ”(˜Q ˜F Q¨ FÐ+µ2´:Ð>Ñ>Ô>ˆÝ”
˜2‘”ˆÝ”˜9 hÐ/°{ÐCÑCÔCˆÝ�G˜U¨¸+ÐFÑFÔFˆØ�˜IÑ%Ñ&¨Ñ2ˆÝØØ˜U FÐ+Ø�CØ(ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó|  — d} d}d}t           j        }t          j                             dg d¢dg| ¬¦  «        }t          j        g d¢t           j        ¬¦  «        }t          j        d	¦  «        }t          j        ||g|¬¦  «        }t          ||| |¬
¦  «        }|||z
  z  |z   }t          ||||g|gd¬¦  «         d S )Nr   r<   r   r%   r&   r=   )r   iùÿÿÿiøÿÿÿr	   r@   rA   Útest_onehot_negative_indicesr-   ©	r   r5   r0   r1   r2   r3   r4   r   r   rD   s	            r   Úexport_with_negative_indicesz#OneHot.export_with_negative_indicesM   sì   € àˆ	ØˆØˆ	Ý”jˆÝŒ{×$Ò$ØØ1Ð1Ð1Ø�EØð	 %ñ 
ô 
ˆõ ”(˜;˜;˜;­b¬hÐ7Ñ7Ô7ˆõ ”
˜2‘”ˆÝ”˜9 hÐ/°{ÐCÑCÔCˆÝ�G˜U¨¸+ÐFÑFÔFˆØ�˜IÑ%Ñ&¨Ñ2ˆÝØØ˜U FÐ+Ø�CØ/ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó|  — d} d}d}t           j        }t          j                             dg d¢dg| ¬¦  «        }t          j        g d¢t           j        ¬¦  «        }t          j        d	¦  «        }t          j        ||g|¬¦  «        }t          ||| |¬
¦  «        }|||z
  z  |z   }t          ||||g|gd¬¦  «         d S )Nr   r<   r   r%   r&   r=   )r#   iúÿÿÿr   r	   r#   rA   Ú test_onehot_out_of_range_indicesr-   rI   rD   s	            r   Ú export_with_out_of_range_indicesz'OneHot.export_with_out_of_range_indicesk   sì   € àˆ	ØˆØˆ	Ý”jˆÝŒ{×$Ò$ØØ1Ð1Ð1Ø�EØð	 %ñ 
ô 
ˆõ ”(˜;˜;˜;­b¬hÐ7Ñ7Ô7ˆõ ”
˜1‘”ˆÝ”˜9 hÐ/°{ÐCÑCÔCˆÝ�G˜U¨¸+ÐFÑFÔFˆØ�˜IÑ%Ñ&¨Ñ2ˆÝØØ˜U FÐ+Ø�CØ3ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó„  — d} d}d}t           j        }t          j                             dg d¢dg| ¬¦  «        }t          j        ddgd	d
ggt           j        ¬¦  «        }t          j        d¦  «        }t          j        ||g|¬¦  «        }t          ||| |¬¦  «        }|||z
  z  |z   }t          ||||g|gd¬¦  «         d S )Néþÿÿÿr<   r   r   r%   r&   r=   r>   r$   r?   r	   r@   rA   Útest_onehot_with_negative_axisr-   rC   rD   s	            r   Úexport_with_negative_axisz OneHot.export_with_negative_axisŠ   só   € àˆ	ØˆØˆ	Ý”jˆÝŒ{×$Ò$ØØ1Ð1Ð1Ø�EØð	 %ñ 
ô 
ˆõ ”(˜Q ˜F Q¨ FÐ+µ2´:Ð>Ñ>Ô>ˆÝ”
˜2‘”ˆÝ”˜9 hÐ/°{ÐCÑCÔCˆÝ�G˜U¨¸+ÐFÑFÔFˆØ�˜IÑ%Ñ&¨Ñ2ˆÝØØ˜U FÐ+Ø�CØ1ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óà  — d} d}d}t           j        }t          j                             dg d¢dg| ¬¦  «        }t          j        dd	gt
          j        ¬
¦  «        }t          j        d¦  «        }t          j        ||g|¬
¦  «        }t          |t          |¦  «        | |¬¦  «        }| |||z
  ¦  «        z   ||¦  «        z                        |¦  «        }t          ||||g|gd¬¦  «         d S )Nr   g      @g      ð?r   r%   r&   r=   r   r$   r	   r?   rA   Ú test_onehot_with_bfloat16_valuesr-   )Ú	ml_dtypesÚbfloat16r0   r1   r2   r   r3   r4   r5   r   ÚintÚastyper   rD   s	            r   Úexport_with_bfloat16_valuesz"OneHot.export_with_bfloat16_values¢   s  € àˆ	ØˆØˆ	ÝÔ(ˆÝŒ{×$Ò$ØØ1Ð1Ð1Ø�EØð	 %ñ 
ô 
ˆõ ”(˜A˜q˜6­¬Ð2Ñ2Ô2ˆÝ”
˜1‘”ˆÝ”˜9 hÐ/°{ÐCÑCÔCˆÝ�G�S ™ZœZ¨i¸{ÐKÑKÔKˆØ��˜X¨	Ñ1Ñ2Ô2Ñ2°[°[ÀÑ5KÔ5KÑK×SÒSØñ
ô 
ˆõ 	ØØ˜U FÐ+Ø�CØ3ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   N)r    r!   )
Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr:   rF   rJ   rM   rQ   rX   © r   r   r   r       sÒ   € € € € € Øð
ð 
ð 
ñ „\ð
ð& ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð: ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð 
ð 
r   r   )Ú
__future__r   rT   Únumpyr   r0   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r5   r   r   r]   r   r   ú<module>rb      s¹   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð "$¨2¬:ð 6ð 6ð 6ð 6ð$Z
ð Z
ð Z
ð Z
ð Z
ˆTñ Z
ô Z
ð Z
ð Z
ð Z
r   