
    h+                     B    S SK rS SKrS SKJr  S SKJr   " S S\5      rg)    N)Base)expectc                   |    \ rS rSrSr\S
S j5       r\S
S j5       r\S
S j5       r\S
S j5       r	\S
S j5       r
S	rg)Col2Im   zCol2Im operator with N-dimension support

The tests below can be reproduced in Python using https://github.com/f-dangel/unfoldNd/
Nc                  L   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ//5      R                  [         R                  5      n [         R                  " SS/5      R                  [         R                  5      n[         R                  " SS/5      R                  [         R                  5      n[
        R                  R                  S/ S	QS
/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ///5      R                  [         R                  5      n[        UXU/U/SS9  g )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(   s        \/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/col2im.pyexportCol2Im.export   s     10000

 &
 	 hh1v&--bhh7hh1v&--bhh7{{$$=z
  21666

 &
 	 	4H		
    c                  f   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	/5      R                  [         R                  5      n [         R                  " SS/5      R                  [         R                  5      n[         R                  " SS/5      R                  [         R                  5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ///5      R                  [         R                  5      n[
        R                  R                  S	/ S
QS/SS/S9n[        UXU/U/SS9  g )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(   r7   s        r8   export_col2im_stridesCol2Im.export_col2im_strides<   s    )((((((((

 &
 	 hh1v&--bhh7hh1v&--bhh7 21111

 &
 	 {{$$3JF	 % 
 	4H&		
r;   c                  N   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ//5      R                  [         R                  5      n [         R                  " SS/5      R                  [         R                  5      n[         R                  " SS/5      R                  [         R                  5      n[         R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ///5      R                  [         R                  5      n[
        R                  R                  S/ SQS// SQS9n[        UXU/U/SS9  g )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@rx   )g      `@g      i@g     i@g     i@g      b@r   r$   r(   )r   r#   r   r#   )padstest_col2im_padsr*   r.   rA   s        r8   export_col2im_padsCol2Im.export_col2im_padsk   s   """"KVXZ
t &
u 	v hh1v&--bhh7hh1v&--bhh7 669:;

 &
 	 {{$$3J	 % 
 	4H#		
r;   c            	      N   [         R                  " / SQ/ SQ/ SQ/ SQ//5      R                  [         R                  5      n [         R                  " SS/5      R                  [         R                  5      n[         R                  " SS/5      R                  [         R                  5      n[         R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ///5      R                  [         R                  5      n[
        R                  R                  S/ SQS/SS/S9n[        UXU/U/SS9  g )N)r	   r   r   r      )r   r
   rm   r      )r   r   r   r      )r   r   r   r         r>   )r	   r   r   r   r   r   )r   r   r   r   r   rm   )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.   rA   s        r8   export_col2im_dilationsCol2Im.export_col2im_dilations   s    ....		
 &
 	 hh1v&--bhh7hh1v&--bhh7 778888	
 &
 	 {{$$3J!f	 % 
 	4H(		
r;   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/
/5      R                  [         R                  5      n [         R                  " / SQ5      R                  [         R                  5      n[         R                  " / SQ5      R                  [         R                  5      n[         R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/// SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ S Q// S!Q/ S"Q/ S#Q/ S$Q////5      R                  [         R                  5      n[
        R                  R                  S%/ S&QS'/5      n[        UXU/U/S(S)9  g )*N)r#   r            rE   rF   rG   rH   rI   rJ   rK   )r>         r~      rO   rP   rQ   rR   rS   rT   rU   )r=      r   r      rY   rZ   r[   r\   r]   r^   r_   )   	      r      rc   rd   re   rf   rg   rh   ri   )r"   
      r      rn   ro   rp   rq   rr   rs   rt   )rL   rM   rN   L   Q   V   [   `   e   j   o   t   )rV   rW   rX   M   R   W   \   a   f   k   p   u   )r`   ra   rb   N   S   X   ]   b   g   l   q   v   )rj   rk   rl   O   T   Y   ^   c   h   m   r   w   )ru   rv   rw   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   r~   r   r   r   )r   r   r   r   r   )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   )rJ   rT   r^   rh   rs   )rK   rU   r_   ri   rt   )rL   rV   r`   rj   ru   )rM   rW   ra   rk   rv   )rN   rX   rb   rl   rw   )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.   rA   s        r8   export_col2im_5dCol2Im.export_col2im_5d  sq    CBBBCHHHHI
 &
 	  hhy)00:hhy)00:
 ,,00	 1000	 1000	, 1000	 1001	 6555	+)+-
Z &
[ 	^ {{$$=z
 	4H!		
r;    )returnN)__name__
__module____qualname____firstlineno____doc__staticmethodr9   rB   r{   r   r   __static_attributes__r   r;   r8   r   r      ss    
 &
 &
P ,
 ,
\ x
 x
t (
 (
T K
 K
r;   r   )numpyr/   r4   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r   r;   r8   <module>r      s!      , .P
T P
r;   