o
    wi=+                     @  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                   @  sV   e Zd ZdZedddZedddZeddd	Zedd
dZedddZ	dS )Col2ImzCol2Im operator with N-dimension support

    The tests below can be reproduced in Python using https://github.com/f-dangel/unfoldNd/
    returnNonec                  C  s   t g dg dg dg dg dggt j} t ddgt j}t ddgt j}tjdg d	d
g}t g dg dg dg dg dgggt j}t|| ||g|gdd d S )N)      ?      @      &@      0@      5@)       @      @      (@      1@      6@)      @       @      *@      2@      7@)      @      "@      ,@      3@      8@)      @              .@      4@      9@      r   inputimage_shapeblock_shapeoutput)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    test_col2iminputsoutputsname	nparrayastypefloat32int64onnxhelper	make_noder   )r$   r%   r&   noder'    r7   _/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/col2im.pyexport   sD   

zCol2Im.exportc                  C  s   t g dg dg dg dg dg dg dg dg dg	gt j} t ddgt j}t ddgt j}t g dg dg dg dg dgggt j}tjjd	g d
dgddgd}t|| ||g|gdd d S )N)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'      )stridestest_col2im_stridesr)   r-   r$   r%   r&   r'   r6   r7   r7   r8   export_col2im_strides<   sR   
zCol2Im.export_col2im_stridesc                  C  s   t g dg dg dg dg dggt j} t ddgt j}t ddgt j}t g dg d	g d
g dg dgggt j}tjjdg ddgg dd}t|| ||g|gdd d S )N)r   r	   r
   r   r         $   )   .   3   8   =   B   G   )r   r   r   r   r          %   *   /   4   9   >   C   H   )r   r   r   r   r      !   &   +   0   5   :   ?   D   I   )r   r   r   r   r      "   '   ,   1   6   ;   @   E   J   )r         $@r   r   r       #   (   -   2   7   <   A   F   K   r!   r"   )r   r   r   g      ;@r   )g      C@g     P@g     @Q@g      R@g      K@)g      Q@g     [@     \@g     @]@g      U@)g     X@g     c@g     c@g     @d@rs   )g      `@g      i@g     i@g     i@g      b@r   r#   r'   )r   r"   r   r"   )padstest_col2im_padsr)   r-   r>   r7   r7   r8   export_col2im_padsk   sJ   Z[
zCol2Im.export_col2im_padsc               	   C  s   t g dg dg dg dggt j} t ddgt j}t ddgt j}t g dg dg d	g d
g dg dgggt j}tjjdg ddgddgd}t|| ||g|gdd d S )N)r   r   r   r      )r   r	   rh   r      )r   r   r
   r      )r   r   r   r         r;   )r   r   r   r   r   r   )r   r   r   r   r   rh   )r   r   r   r   r   r   )r   r   r   r   r   g      :@)g      @@r   r   r   r   g      A@)r   r   r   r   r   r   r   r#   r'   r"   r!   )	dilationstest_col2im_dilationsr)   r-   r>   r7   r7   r8   export_col2im_dilations   sJ   	

zCol2Im.export_col2im_dilationsc                  C  sb  t g dg dg dg dg dg dg dg dg d	g d
g
gt j} t g dt j}t g dt j}t g dg dg dg dgg dg dg dg dgg dg dg dg dggg dg dg dg dgg dg dg dg d gg d!g d"g d#g d$ggggt j}tjd%g d&d'g}t|| ||g|gd(d) d S )*N)r"   r{            r@   rA   rB   rC   rD   rE   rF   )r;         rw      rJ   rK   rL   rM   rN   rO   rP   )r:         rx      rT   rU   rV   rW   rX   rY   rZ   )   	      ry      r^   r_   r`   ra   rb   rc   rd   )r!   
      rz      ri   rj   rk   rl   rm   rn   ro   )rG   rH   rI   L   Q   V   [   `   e   j   o   t   )rQ   rR   rS   M   R   W   \   a   f   k   p   u   )r[   r\   r]   N   S   X   ]   b   g   l   q   v   )re   rf   rg   O   T   Y   ^   c   h   m   r   w   )rp   rq   rr   P   U   Z   _   d   i   n   s   x   )r:   r   r!   )r"   r"   r!   )r"   r;   r:   r   r!   )r{   r   r   r   r   )r   r   r   r   r   )r   rw   rx   ry   rz   )r   r   r   r   r   )r@   rJ   rT   r^   ri   )rA   rK   rU   r_   rj   )rB   rL   rV   r`   rk   )rC   rM   rW   ra   rl   )rD   rN   rX   rb   rm   )rE   rO   rY   rc   rn   )rF   rP   rZ   rd   ro   )rG   rQ   r[   re   rp   )rH   rR   r\   rf   rq   )rI   rS   r]   rg   rr   )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   r   r   )r   r   r   r   r   r   r#   r'   test_col2im_5dr)   r-   r>   r7   r7   r8   export_col2im_5d  s   -/
zCol2Im.export_col2im_5dN)r   r   )
__name__
__module____qualname____doc__staticmethodr9   r?   rv   r~   r   r7   r7   r7   r8   r      s    (.z*r   )

__future__r   numpyr.   r3   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r7   r7   r7   r8   <module>   s   