
    hK                     V    S SK rS SKJr  S SKJrJr  S rS rS r	S r
 " S S	\5      rg)
    N)OpRun)_get_indices_is_outc                    Uu  pgUu  pUu  pUu  p[        U R                  5      nUS:X  a&  U R                  S   S:w  a  U R                  S   S:w  d7  US:X  a&  U R                  S   S:w  a  U R                  S   S:w  d  [        S5      e[        U R                  5      S:X  a  SOSnU R                  US-      nUX-  -  S:w  a  [        SU SU S	35      eU R                  US-      nXdSS S 24   R                  5       -   XS-
  -  -
  S-
  U-  S-   nXtSS S 24   R                  5       -   XS-
  -  -
  S-
  U-  S-   nUUU-  :w  a?  [        S
U SU SU R                   SU SU SU SU SU S3SU SU SUU-   SU S	3	5      eUS:  a  US:  d4  [        S
U SU SU R                   SU SU SU SU SU SU SU S35      eg )N   r         zmExpected 2D or 3D (batch mode) tensor for input with possibly 0 batch size and non-zero dimensions for input.zjExpected size of input's dimension 1 to be divisible by the product of kernel_size, but got input.size(1)=z and kernel_size=.zGiven batch_dim=z, n_input_plane=
, X.shape=, output_shape=, kernel_shape=, dilations=, pads=
, strides=zI, expected size of input's dimension 2 to match the calculated number of zsliding blocks z *  = , but got input.size(2)=z6, calculated shape of the array of sliding blocks as (z, z%), which is too small (non-positive).)lenshape
ValueErrorsum)Xoutput_shapekernel_shape	dilationspadsstridesoutput_heightoutput_widthkernel_heightkernel_widthdilation_heightdilation_widthstride_heightstride_widthndim	batch_dimn_input_planeinput_lengthn_blocks_heightn_blocks_widths                       V/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_col2im.py_col2im_shape_check_2dr-      s   ".M".M&/#O")Mqww<D	qwwqzQ1771:?AI!''!*/aggajAo{
 	
 \Q&BIGGIM*M45:==JO L+nA/
 	
 779q=)LQT
((?a>O+PPSTT	O 	AqDz~~''.1<L*MMPQQ	N .89yk)9-
STSZSZR[ \(> G"74&
7) DVW o.c.1A_WeEeDf g%%1N!5
 	
 q ^q%8yk)9-
STSZSZR[ \(> G"74&
7) DCCRBSSUVdUe f12
 	
 &9    c           	         [        U5      S-  n[        R                  " [        U5       Vs/ s H  otU   XGU-      4PM     sn5      n[	        XX#X5        U R                  5       n	[        R                  " XR                  S9R                  5       n
Uu  pX-  nUu  pUu  nnUS S 2S4   u  nnUu  nnUu  nnUUSS S 24   R                  5       -   UUS-
  -  S-   -
  U-  S-   nUUSS S 24   R                  5       -   UUS-
  -  S-   -
  U-  S-   n[        U5       H  nUU-  nUU-  U-  nUX-  -  n[        U5       H  nUU-  U-
  UU-  -   n[        U5       H  n U U-  U-
  UU-  -   n!SUs=::  a  U:  d  M   O  M$  SU!s=::  a  U:  d  M3  O  M7  UU-  U-   U-  U!-   n"UU-  U-   U-  U -   n#SU#s=::  a  U	R                  S   :  d  Mo  O  Ms  U
U"==   U	U#   -  ss'   M     M     M     U
R                  U5      $ s  snf )Nr   dtyper   r   )r   nparrayranger-   ravelzerosr1   flattenr   r   reshape)$resimage_shaper   r   r   r   n_dimsinew_padsdata_coldata_imkernel_hkernel_wchannels_colstride_hstride_w
dilation_h
dilation_wpad_hpad_wheightwidthr   r   
height_col	width_colc_colw_offseth_offsetc_imh_colh_imw_colw_imi_imi_cols$                                       r,   _col2im_naive_implementation_2drW   A   sR    Y!^FxxeFmLmq'4F
#34mLMH3\hXyy{Hhh{))4<<>G%H&L H&J
AqD>LE5MFE"-M< 	A**,,
hl0Ka0OP	J 	x1~))++zX\/JQ/NO	I |$8#X%1,-:&E8#e+h.CCDy)x'%/(Z2GG%v%%!t*;e*;*; 6MD0E9D@D"Z/%79DuLEE5HNN1$555%8 * ' % ??;''I Ms   G9c                 *   U R                   S   n[        R                  " U5      nXg-  S:w  a%  [        SU SU SU SU R                    SU S35      eU R                   S   n[	        U5      n	/ n
[        U	5       HG  nX   XKS S 24   R                  5       -   X;   X+   S-
  -  -
  S-
  X[   -  S-   nU
R                  U5        MI     [        R                  " U
5      nX:w  a4  [        S	U SU R                    SU S
U SU SU SU SU
 SU SU S35      eg )Nr   zSExpected size of input's dimension 1 to be divisible by the product of kernel_size=z, but got input.size(1)=z and kernel_shape=r   r   r   r   zGiven n_input_plane=r   r   r   r   zX, expected size of input's dimension 2 to match the calculated number of sliding blocks r   r   )r   r2   prodr   r   r4   r   append)r   r   r   r   r   r   r(   kernel_sizer)   r;   n_blocksr<   n_block
block_sizes                 r,   _col2im_shape_checkr_   l   s|   GGAJM'','K"a'&&1] 3%%2O 4  ,~ZyP\~]^`
 	
 771:LFH6]Oa4jnnllo123  Z
  	   "J!"=/AGG9 E(> G"74&
7) D&Zs:, 7%%1N!5
 	
 "r.   c           	      d   [        U5      S-  n[        R                  " [        U5       Vs/ s H  otU   XGU-      4PM     sn5      n[	        XX#X5        U n	[        R
                  " XR                  S9n
/ n[        U5       HG  nX   XSS24   R                  5       -   X7   X'   S-
  -  S-   -
  XW   -  S-   nUR                  U5        MI     [        R                  " U5      n[        R                  " U5      n[        U5       H  n[        X5      n[        U5       H  n[        X5      n/ n[        U5       H0  nUU   XW   -  XS4   -
  UU   X7   -  -   nUR                  U5        M2     [        UU
R                  5      (       a  Ml  U
[        U5      ==   XU4   -  ss'   M     M     U
$ s  snf )z$
Naive implementation for `col2im`.
r   r0   Nr   r   )r   r2   r3   r4   r_   r6   r1   r   rZ   rY   r   r   r   tuple)datar:   r   r   r   r   r;   r<   r=   r>   r?   dim_colcolr[   col_sizerM   offsetind_colind_iminds                       r,   col2im_naive_implementationrj      s    Y!^FxxeFmLmq'4F
#34mLMH<HVHhh{**5GG6]N!tn  "#||23a79 Z	 	
 	s  '','KwwwH{#e2?C"30GF6]AJ+h!tn<vay9<?WW  c"	 # 67==11f&(#:*>>& # $ NA Ms   F-c                       \ rS rSrSS jrSrg)Col2Im   Nc           
         Uc  U Vs/ s H  nSPM     nnUc  U Vs/ s H  nSPM     snS-  nUc  U Vs/ s H  nSPM     nn[         R                  " U5      nUR                  S   U-  n	UR                  UR                  S S U	4-   U4-   UR                  SS  -   5      n[	        U5      n
S n[        UR                  S   5       Hx  n[        UR                  S   5       HY  n[        XUS4   X*XEU5      nUc:  UR                  S S UR                  -   n[         R                  " XR                  S9nXXS4'   M[     Mz     U4$ s  snf s  snf s  snf )Nr   r   r   .r0   )	r2   rY   r   r8   ra   r4   rj   emptyr1   )selfrb   r:   block_shaper   r   r   sblCksr9   ncout	new_shapes                   r,   _runCol2Im._run   sP   $/0KqKI0<*+{!A{+a/D?"-.+Qq+G.WW[!JJqMR||DJJrNaT1RE9DJJqrNJK;tzz!}%A4::a=)1AsO[iw ; $

2A :I((9JJ?C!$A#I * & v+ 1+.s   EEE )NNN)__name__
__module____qualname____firstlineno__rz   __static_attributes__r|   r.   r,   rl   rl      s    r.   rl   )numpyr2   onnx.reference.op_runr   %onnx.reference.ops._op_common_indicesr   r   r-   rW   r_   rj   rl   r|   r.   r,   <module>r      s4     ' G2
j((V"
J%PU r.   