U
    rh                      @  st   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ddddd	d
Z	ddddddddZ
G dd deZdS )    )annotationsN)Base)expect   z
np.ndarrayint)dataaxiskeepdimsreturnc                 C  s.   t j| |d}|dkr"t ||}|t jS N)r   r   )npargmaxexpand_dimsastypeint64r   r   r	   result r   F/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/argmax.pyargmax_use_numpy   s    r   Tc                 C  sH   t | |} t j| |d}| j| | d }|r<t ||}|t jS r   )r   Zflipr   shaper   r   r   r   r   r   r   "argmax_use_numpy_select_last_index   s    r   c                   @  s   e Zd ZeddddZeddddZeddddZeddd	d
ZeddddZeddddZ	eddddZ
eddddZdS )ArgMaxNone)r
   c                  C  s   t jddgddggt jd} d}d}tjjddgd	g||d
}t| ||d}t|| g|gdd t j	dddddg
t j} t| ||d}t|| g|gdd d S )N   r      
   Zdtyper   r   r   r   inputsoutputsr   r	   r   r	   Ztest_argmax_no_keepdims_exampler   r    name   Ztest_argmax_no_keepdims_randomr   arrayfloat32onnxhelper	make_noder   r   randomuniformr   r   r   r	   noder   r   r   r   export_no_keepdims    s2           zArgMax.export_no_keepdimsc                  C  s   t jddgddggt jd} d}d}tjjddgdg||d	}t| ||d
}t|| g|gdd t j	dddddg
t j} t| ||d
}t|| g|gdd d S )Nr   r   r   r   r   r   r   r   r   r!   Ztest_argmax_keepdims_exampler"   r$   r%   Ztest_argmax_keepdims_randomr&   r.   r   r   r   export_keepdims8   s2              zArgMax.export_keepdimsc                  C  s   t jddgddggt jd} d}tjjddgdg|d	}t| |d
}t|| g|gdd t j	dddddg
t j} t| |d
}t|| g|gdd d S )Nr   r   r   r   r   r   r   r   )r   r    r	   r	   Z test_argmax_default_axis_exampler"   r$   r%   Ztest_argmax_default_axis_randomr&   r   r	   r/   r   r   r   r   export_default_axes_keepdimsM   s.       z#ArgMax.export_default_axes_keepdimsc                  C  s   t jddgddggt jd} d}d}tjjddgd	g||d
}t| ||d}t|| g|gdd t j	dddddg
t j} t| ||d}t|| g|gdd d S )Nr   r   r   r   r   r   r   r   r   r!   Z*test_argmax_negative_axis_keepdims_exampler"   r$   r%   Z)test_argmax_negative_axis_keepdims_randomr&   r.   r   r   r   export_negative_axis_keepdimsh   s2        z$ArgMax.export_negative_axis_keepdimsc                  C  s   t jddgddggt jd} d}d}tjjddgd	g||d
d}t| ||d}t|| g|gdd t j	dddddg
t j} t| ||d}t|| g|gdd d S )Nr   r   r   r   r   r   r   r   r   Tr   r    r   r	   select_last_indexr!   Z1test_argmax_no_keepdims_example_select_last_indexr"   r$   r%   Z0test_argmax_no_keepdims_random_select_last_indexr   r'   r(   r)   r*   r+   r   r   r,   r-   r   r.   r   r   r   $export_no_keepdims_select_last_index   s4    	z+ArgMax.export_no_keepdims_select_last_indexc                  C  s   t jddgddggt jd} d}d}tjjddgdg||d	d
}t| ||d}t|| g|gdd t j	dddddg
t j} t| ||d}t|| g|gdd d S )Nr   r   r   r   r   r   r   r   Tr7   r!   Z.test_argmax_keepdims_example_select_last_indexr"   r$   r%   Z-test_argmax_keepdims_random_select_last_indexr9   r.   r   r   r   !export_keepdims_select_last_index   s4    	z(ArgMax.export_keepdims_select_last_indexc                  C  s   t jddgddggt jd} d}tjjddgdg|d	d
}t| |d}t|| g|gdd t j	dddddg
t j} t| |d}t|| g|gdd d S )Nr   r   r   r   r   r   r   r   T)r   r    r	   r8   r2   Z2test_argmax_default_axis_example_select_last_indexr"   r$   r%   Z1test_argmax_default_axis_random_select_last_indexr9   r3   r   r   r   .export_default_axes_keepdims_select_last_index   s0    	z5ArgMax.export_default_axes_keepdims_select_last_indexc                  C  s   t jddgddggt jd} d}d}tjjddgd	g||d
d}t| ||d}t|| g|gdd t j	dddddg
t j} t| ||d}t|| g|gdd d S )Nr   r   r   r   r5   r   r   r   r   Tr7   r!   Z<test_argmax_negative_axis_keepdims_example_select_last_indexr"   r$   r%   Z;test_argmax_negative_axis_keepdims_random_select_last_indexr9   r.   r   r   r   /export_negative_axis_keepdims_select_last_index   s4    	z6ArgMax.export_negative_axis_keepdims_select_last_indexN)__name__
__module____qualname__staticmethodr0   r1   r4   r6   r:   r;   r<   r=   r   r   r   r   r      s    r   )r   r   )r   T)
__future__r   Znumpyr   r)   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r   r   r   r   r   <module>   s      