U
    rhM                     @  sH   d dl mZ d dlZd dlZd dlmZ d dlmZ G dd deZ	dS )    )annotationsN)Base)expectc                   @  sT   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dS )
GridSampleNone)returnc                  C  s  t jjdddgdgdddd} tjd	d
ddgddddgddddgddddggggtjd}tjddgddgddgddgddgd
dggddgddgddgddgddgd
dggddgddgddgddgddgd
dggddgddgddgddgddgd
dggddgddgddgddgddgd
dggdd
gdd
gdd
gdd
gdd
gd
d
ggggtjd}tjd	dd d!d"d#gdd$d%d&d'd(gd)d*d+d,d-d.gd/d0d1d2d3d4gd5d6d7d8d9d:gdd;d<d=d>d?ggggtjd}t| ||g|gd@dA d S )BNr   XGridYlinearzerosr   )inputsoutputsmodepadding_modealign_corners              ?       @      @      @      @      @      @       @      "@      $@      &@      (@g      *@g      ,@g      .@Zdtype      333333皙ɿ皙?333333?g333333?g?gffffff?g?g      ?      ?gffffff@g@g333333@ @皙@@g      @g333333@gffffff@皙@gffffff@g@gffffff!@g      #@g$@g333333@皙@g333333&@g'@gffffff)@g      +@g@g@g333333@g@gffffff@      @Ztest_gridsampler   r   name)onnxhelper	make_nodenparrayfloat32r   )noder   r	   r
    r5   J/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/gridsample.pyexport_gridsample   s    	




					48zGridSample.export_gridsamplec                  C  sx  t jddgddgddggggt jd} t jddgd	d	gd
d
gddggddgd
d
gddgddggggt jd}tjjdddgdgdd}t jddddgddddggggt jd}t|| |g|gdd tjjdddgdgdd}t jddddgddddggggt jd}t|| |g|gdd tjjdddgdgdd}t jddddgddddggggt jd}t|| |g|gdd d S )Nr   r   r   r   r   r   r   g      $g      r"   r   r   r   r	   r
   r   )r   r   r   333333?Ztest_gridsample_zeros_paddingr,   ZborderZtest_gridsample_border_paddingZ
reflection      @Z"test_gridsample_reflection_paddingr1   r2   r3   r.   r/   r0   r   )r   r	   r4   ZY_zerosZY_borderZY_reflectionr5   r5   r6   export_gridsample_paddingmodep   s    z(GridSample.export_gridsample_paddingmodec                  C  s4  t jddgddgddggggt jd} t jddgd	d	gd
d
gddggddgd
d
gddgddggggt jd}tjjdddgdgdd}t jddddgddddggggt jd}t|| |g|gdd tjjdddgdgddd}t jddddgddddggggt jd}t|| |g|gdd tjjdddgdgdd}t jddddgddddggggt jd}t|| |g|gdd tjjdddgdgdd}t jdd d!d"gd"d!d#d$ggggt jd}t|| |g|gd%d t jdd&gd'd	gd(d
gd)dggdd*gd+d
gd,dgddggggt jd}tjjdddgdgdd-d}t jddddgddddggggt jd}t|| |g|gd.d tjjdddgdgddd}t jddddgddddggggt jd}t|| |g|gd/d tjjdddgdgdd-d}t jdd0d1d2gd3d4d3dggggt jd}t|| |g|gd5d tjjdddgdgddd}t jd*d6d7d8gd9d:d;dggggt jd}t|| |g|gd<d tjjdddgdgdd-d}t jd=d>d?d@gdAdBdCdDggggt jd}t|| |g|gdEd tjjdddgdgddd}t jdFdGdHdIgdJdKdLdggggt jd}t|| |g|gdMd d S )NNr   r   r   r   r   r   r   r          r"         ?r   r   r	   r
   r   )r   r   r   r8   r9   g      @g      ?Ztest_gridsample_bilinearr,      r   r   r   r   r+   Z!test_gridsample_aligncorners_truenearestZtest_gridsample_nearestZcubicgH.g):?g?g6@g@g??Ztest_gridsample_bicubic皙r!   ggffffff?皙?r#   333333ӿr   Z4test_gridsample_nearest_align_corners_0_additional_1Z4test_gridsample_nearest_align_corners_1_additional_1?g?333333@r)   r&   Z5test_gridsample_bilinear_align_corners_0_additional_1g333333?gffffff @g@ffffff
@r'   g
@Z5test_gridsample_bilinear_align_corners_1_additional_1gV-ƿgoe1?g
?g%C@gX9v@gD2zF@g|b@g     ?Z4test_gridsample_bicubic_align_corners_0_additional_1g	<t?g(\?gS?o*R!@g,(	@gK7A @g@ȓ@g6f@Z4test_gridsample_bicubic_align_corners_1_additional_1r:   )r   r	   r4   
Y_bilinearZY_align_corners	Y_nearestZ	Y_bicubicr5   r5   r6   #export_gridsample_mode_aligncorners   s         




z.GridSample.export_gridsample_mode_aligncornersc               	   C  s  t jddgddggddgddggd	d
gddgggggt jd} t jdddgdddggdddgdddggdddgdddggdddgdddgggdddgdddggdddgdddggdddgdddggdddgdddgggggt jd}tjjdddgdgdd d!}t jddgddgddgddggddgddgdd	gddgggggt jd}t|| |g|gd"d# tjjdddgdgdd$d!}t jddgddgddgddggddgddgdd	gddgggggt jd}t|| |g|gd%d# tjjdddgdgd&d d!}t jd'd(gdd)gd*d+gd,dggd,d-gd*d.gdd/gd0d1gggggt jd}t|| |g|gd2d# tjjdddgdgd&d$d!}t jdd3gd4d5gd6d7gd,dggd,dgd6d8gd9d:gdd;gggggt jd}t|| |g|gd<d# d S )=Nr   r   r   r   r   r   r   r   r   r   r   r   r   r    r<   g333333?r!   r"   rB   r#   r$   r   r=   rA   g?rC   r   r   r	   r
   r@   r   r?   Z2test_gridsample_volumetric_nearest_align_corners_0r,   r>   Z2test_gridsample_volumetric_nearest_align_corners_1r   g      ?g333333@rD   r(   g%@g      @g      ?rF   g)\(@r%   g(\@Z3test_gridsample_volumetric_bilinear_align_corners_0g@r+   rE   r*   g"@gffffff@g     "@g @gffffff@Z3test_gridsample_volumetric_bilinear_align_corners_1r:   )r   r	   r4   rH   rG   r5   r5   r6   /export_volumeetric_gridsample_mode_aligncorners  s    	z:GridSample.export_volumeetric_gridsample_mode_aligncornersN)__name__
__module____qualname__staticmethodr7   r;   rI   rJ   r5   r5   r5   r6   r      s   aW | #r   )

__future__r   Znumpyr1   r.   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r5   r5   r5   r6   <module>   s
   