§
    2�Åjý  ã                  ój   — d dl mZ d dlZd dlmZ d dlmZmZ d„ Z	d„ Z
d„ Zd„ Z G d	„ d
e¦  «        ZdS )é    )ÚannotationsN)ÚOpRun)Ú_get_indicesÚ_is_outc                ó¨  — |\  }}|\  }}	|\  }
}|\  }}t          | j        ¦  «        }|dk    r"| j        d         dk    r| j        d         dk    s7|dk    r"| j        d         dk    r| j        d         dk    st          d¦  «        ‚t          | j        ¦  «        dk    rdnd}| j        |dz            }||	|z  z  dk    rt          d|› d|› d	�¦  «        ‚| j        |dz            }||dd d …f                              ¦   «         z   |
|dz
  z  z
  dz
  |z  dz   }||dd d …f                              ¦   «         z   ||	dz
  z  z
  dz
  |z  dz   }|||z  k    r>t          d
|› d|› d| j        › d|› d|› d|› d|› d|› d�d|› d|› d||z  › d|› d	�	¦  «        ‚|dk    r|dk    s3t          d
|› d|› d| j        › d|› d|› d|› d|› d|› d|› d|› d�¦  «        ‚d S )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                       úMC:\Projects\Historical\venv\Lib\site-packages\onnx/reference/ops/op_col2im.pyÚ_col2im_shape_check_2dr.      s\  € Ø".Ñ€M�<Ø".Ñ€M�<Ø&/Ñ#€O�^Ø")Ñ€M�<åˆqŒw‰<Œ<€Dà	�Šˆ�q”w˜q”z Q’�¨1¬7°1¬:¸ª?¨?Ø�AŠIˆI˜!œ' !œ*¨š/˜/¨a¬g°a¬j¸Aªo¨oåØ{ñ
ô 
ð 	
õ ˜œ‘\”\ QÒ&Ð&��¨B€IØ”G˜I¨™MÔ*€Mà˜ }Ñ4Ñ5¸Ò:Ð:Ýð/Ø=Jð/ð /à+ð/ð /ð /ñ
ô 
ð 	
ð ”7˜9 q™=Ô)€Là˜˜Q   ˜Tœ
ŸšÑ(Ô(Ñ(¨?¸mÈaÑ>OÑ+PÑPÐSTÑTØ	ñàñ€Oð 	�t˜A˜q˜q˜q˜D”z—~’~Ñ'Ô'Ñ'¨.¸LÈ1Ñ<LÑ*MÑMÐPQÑQØ	ñàñ€Nð ˜¨.Ñ8Ò9Ð9ÝðW˜yð Wð W¸-ð Wð WÐSTÔSZð Wð WØ(ðWð WØ9EðWð Wà"ðWð Wà+/ðWð Wà;BðWð Wð Wð5˜oð 5ð 5°.ð 5ð 5À_ÐWeÑEeð 5ð 5Ø%1ð5ð 5ð 5ñ
ô 
ð 	
ð ˜qÒ Ð  ^°qÒ%8Ð%8Ýð2˜yð 2ð 2¸-ð 2ð 2ÐSTÔSZð 2ð 2Ø(ð2ð 2Ø9Eð2ð 2à"ð2ð 2à+/ð2ð 2à;Bð2ð 2ð DSð2ð 2ð Weð2ð 2ð 2ñ
ô 
ð 	
ð &9Ð%8ó    c                ó(  ‡‡"— t          ‰¦  «        dz  Š"t          j        ˆ"ˆfd„t          ‰"¦  «        D ¦   «         ¦  «        }t	          | |||||¦  «         |                      ¦   «         }t          j        || j        ¬¦  «                             ¦   «         }|\  }	}
|	|
z  }|\  }}|\  }}|d d …df         \  }}|\  }}|\  }}||dd d …f          	                    ¦   «         z   ||	dz
  z  dz   z
  |z  dz   }||dd d …f          	                    ¦   «         z   ||
dz
  z  dz   z
  |z  dz   }t          |¦  «        D ]Ä}||
z  }||
z  |	z  }||	|
z  z  }t          |¦  «        D ]�}||z  |z
  ||z  z   }t          |¦  «        D ]}}||z  |z
  ||z  z   }d|cxk    r|k     r`n Œ d|cxk    r|k     rPn Œ0||z  |z   |z  |z   } ||z  |z   |z  |z   }!d|!cxk    r|j
        d         k     rn Œg|| xx         ||!         z  cc<   Œ~ŒžŒÅ|                     |¦  «        S )Nr   c                ó6   •— g | ]}‰|         ‰|‰z            f‘ŒS © r2   ©Ú.0ÚiÚn_dimsr   s     €€r-   ú
<listcomp>z3_col2im_naive_implementation_2d.<locals>.<listcomp>G   ó+   ø€ ÐLÐLÐL¸˜$˜qœ' 4¨¨F©
Ô#3Ð4ÐLÐLÐLr/   ©Údtyper   r	   )r   ÚnpÚarrayÚranger.   ÚravelÚzerosr:   Úflattenr   r   Úreshape)#ÚresÚimage_shaper   r   r   r   Ú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_colr6   s#       `                             @r-   Ú_col2im_naive_implementation_2dr^   A   sß  øø€ õ
 �‰YŒY˜!‰^€FÝŒxÐLÐLÐLÐLÐL½eÀF¹m¼mÐLÑLÔLÑMÔM€HÝ˜3 ¨\¸9ÀhÐPWÑXÔXÐXà�yŠy‰{Œ{€HÝŒh�{¨#¬)Ð4Ñ4Ô4×<Ò<Ñ>Ô>€Gà%Ñ€HˆhØ˜hÑ&€LØ Ñ€HˆhØ&Ñ€J�
Ø˜A˜A˜A˜q˜D”>�L€Eˆ5Ø�M€FˆEØ"-Ñ€M�<ð 	˜  A A A œ×*Ò*Ñ,Ô,Ñ,°
¸hÈ¹lÑ0KÈaÑ0OÑPØ	ñàñ€Jð 	�x  1 1 1 ”~×)Ò)Ñ+Ô+Ñ+¨z¸XÈ¹\Ñ/JÈQÑ/NÑOØ	ñàñ€Iõ �|Ñ$Ô$ð 9ð 9ˆØ˜8Ñ#ˆØ˜XÑ%¨Ñ1ˆØ˜ HÑ,Ñ-ˆå˜:Ñ&Ô&ð 	9ð 	9ˆEØ˜8Ñ# eÑ+¨h¸Ñ.CÑCˆDÝ˜yÑ)Ô)ð 9ð 9�Ø˜xÑ'¨%Ñ/°(¸ZÑ2GÑG�Ø˜Ð%Ð%Ò%Ð%˜vÒ%Ð%Ð%Ð%Ð%¨!¨tÐ*;Ð*;Ò*;Ð*;°eÒ*;Ð*;Ð*;Ð*;Ð*;Ø  6™M¨DÑ0°EÑ9¸DÑ@�DØ" ZÑ/°%Ñ7¸9ÑDÀuÑL�EØ˜EÐ5Ð5Ò5Ð5 H¤N°1Ô$5Ò5Ð5Ð5Ð5Ð5Ø ˜˜œ¨°%¬Ñ8˜˜™øð9ð	9ð �?Š?˜;Ñ'Ô'Ð'r/   c                ó\  — | j         d         }t          j        |¦  «        }||z  dk    r$t          d|› d|› d|› d| j         › d|› d�¦  «        ‚| j         d         }t	          |¦  «        }	g }
t          |	¦  «        D ]b}||         ||d d …f                              ¦   «         z   ||         ||         dz
  z  z
  dz
  ||         z  dz   }|
                     |¦  «         Œct          j        |
¦  «        }||k    r3t          d	|› d| j         › d|› d
|› d|› d|› d|› d|
› d|› d|› d�¦  «        ‚d S )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   r;   Úprodr   r   r=   r   Úappend)r   r   r   r   r   r   r)   Úkernel_sizer*   r6   Ún_blocksr5   Ún_blockÚ
block_sizes                 r-   Ú_col2im_shape_checkrf   n   s  € Ø”G˜A”J€Må”'˜,Ñ'Ô'€Kà�{Ñ" aÒ'Ð'Ýð`Ø&1ð`ð `à%2ð`ð `ð !-ð`ð `ð 9:¼ð`ð `ð Q]ð`ð `ð `ñ
ô 
ð 	
ð ”7˜1”:€LÝ�ÑÔ€FØ€HÝ�6‰]Œ]ð !ð !ˆà˜ŒOØ�1�a�a�a�4Œj�nŠnÑÔñà˜Œl˜l¨1œo°Ñ1Ñ2ñ3ð ñð �QŒZñð
 ñˆð 	�Š˜Ñ Ô Ð Ð å”˜Ñ"Ô"€JØ�zÒ!Ð!Ýð5 =ð 5ð 5¸A¼Gð 5ð 5Ø(ð5ð 5Ø9Eð5ð 5à"ð5ð 5à+/ð5ð 5à;Bð5ð 5ð 'ð	5ð 5ð ,6ð	5ð 5ð
 &2ð5ð 5ð 5ñ
ô 
ð 	
ð "Ð!r/   c                óÎ  ‡‡— t          ‰¦  «        dz  Št          j        ˆˆfd„t          ‰¦  «        D ¦   «         ¦  «        }t	          | |||||¦  «         | }t          j        || j        ¬¦  «        }g }	t          ‰¦  «        D ]b}
||
         ||
dd…f                              ¦   «         z   ||
         ||
         dz
  z  dz   z
  ||
         z  dz   }|	                     |¦  «         Œct          j	        |¦  «        }t          j	        |	¦  «        }t          |¦  «        D ]Å}t          ||¦  «        }t          |¦  «        D ]£}t          ||	¦  «        }g }t          ‰¦  «        D ]E}
||
         ||
         z  ||
df         z
  ||
         ||
         z  z   }|                     |¦  «         ŒFt          ||j        ¦  «        s%|t          |¦  «        xx         |||f         z  cc<   Œ¤ŒÆ|S )z"Naive implementation for `col2im`.r   c                ó6   •— g | ]}‰|         ‰|‰z            f‘ŒS r2   r2   r3   s     €€r-   r7   z/col2im_naive_implementation.<locals>.<listcomp>˜   r8   r/   r9   Nr	   r   )r   r;   r<   r=   rf   r?   r:   r   ra   r`   r   r   r   Útuple)ÚdatarC   r   r   r   r   rD   rE   rF   Údim_colr5   Úcolrb   Úcol_sizerT   ÚoffsetÚind_colÚind_imÚindr6   s       `              @r-   Úcol2im_naive_implementationrr   “   s   øø€ õ �‰YŒY˜!‰^€FÝŒxÐLÐLÐLÐLÐL½eÀF¹m¼mÐLÑLÔLÑMÔM€HÝ˜˜k¨<¸ÀHÈgÑVÔVÐVà€HÝŒh�{¨$¬*Ð5Ñ5Ô5€Gà€GÝ�6‰]Œ]ð ð ˆà˜ŒNØ�q˜!˜!˜!�tŒn× Ò Ñ"Ô"ñ#à˜Œ|˜|¨Aœ°Ñ2Ñ3°aÑ7ñ9ð �QŒZñ	ð ñ	ˆð
 	�Š�sÑÔÐÐå”'˜,Ñ'Ô'€KÝŒw�wÑÔ€HÝ�{Ñ#Ô#ð ?ð ?ˆÝ˜e \Ñ2Ô2ˆå˜‘?”?ð 
	?ð 
	?ˆCÝ" 3¨Ñ0Ô0ˆGØˆFÝ˜6‘]”]ð #ð #�à˜A”J ¨¤Ñ+¨h°q¸!°t¬nÑ<¸vÀa¼yÈ9ÐUVÌ<Ñ?WÑWð ð —’˜cÑ"Ô"Ð"Ð"å˜6 7¤=Ñ1Ô1ð ?Ø�˜f™œÐ&Ð&Ô&¨(°5¸#°:Ô*>Ñ>Ð&Ð&Ñ&øð
	?ð €Nr/   c                  ó   — e Zd Z	 dd„ZdS )ÚCol2ImNc           
     óz  — |€d„ |D ¦   «         }|€d„ |D ¦   «         dz  }|€d„ |D ¦   «         }t          j        |t           j        ¬¦  «        }|j        d         |z  }|                     g |j        d d…         ¢|‘|‘|j        dd …         ¢R ¦  «        }t          |¦  «        }	d }
t          |j        d         ¦  «        D ]x}t          |j        d         ¦  «        D ][}t          |||df         ||	|||¦  «        }|
€2|j        d d…         |j        z   }t          j        ||j	        ¬¦  «        }
||
||df<   Œ\Œy|
fS )	Nc                ó   — g | ]}d ‘ŒS ©r	   r2   ©r4   Úss     r-   r7   zCol2Im._run.<locals>.<listcomp>À   s   € Ð0Ð0Ð0˜q˜Ð0Ð0Ð0r/   c                ó   — g | ]}d ‘ŒS )r   r2   rx   s     r-   r7   zCol2Im._run.<locals>.<listcomp>Â   s   € Ð+Ð+Ð+˜!�AÐ+Ð+Ð+r/   r   c                ó   — g | ]}d ‘ŒS rw   r2   rx   s     r-   r7   zCol2Im._run.<locals>.<listcomp>Ä   s   € Ð.Ð.Ð.˜Q�qÐ.Ð.Ð.r/   r9   r	   r   .)
r;   r`   Úint64r   rA   ri   r=   rr   Úemptyr:   )Úselfrj   rC   Úblock_shaper   r   r   ÚblÚCÚksrB   ÚnÚcÚoutÚ	new_shapes                  r-   Ú_runzCol2Im._run¼   sy  € ð ÐØ0Ð0 KÐ0Ñ0Ô0ˆIØˆ<Ø+Ð+˜{Ð+Ñ+Ô+¨aÑ/ˆDØˆ?Ø.Ð. +Ð.Ñ.Ô.ˆGåŒW�[­¬Ð1Ñ1Ô1ˆØŒJ�qŒM˜RÑˆØ�|Š|ÐE˜dœj¨¨!¨œnÐE¨aÐE°ÐE°d´jÀÀÀ´nÐEÐEÑFÔFˆå�;ÑÔˆØˆÝ�t”z !”}Ñ%Ô%ð 	%ð 	%ˆAÝ˜4œ: aœ=Ñ)Ô)ð %ð %�Ý1Ø˜˜A˜s˜”O [°"°iÀÀwñô �ð �;Ø $¤
¨2¨A¨2¤°´Ñ :�IÝœ( 9°D´JÐ?Ñ?Ô?�CØ!$��A�q˜#�I‘�ð%ð ˆvˆr/   )NNN)Ú__name__Ú
__module__Ú__qualname__r‡   r2   r/   r-   rt   rt   »   s+   € € € € € àQUðð ð ð ð ð r/   rt   )Ú
__future__r   Únumpyr;   Úonnx.reference.op_runr   Ú%onnx.reference.ops._op_common_indicesr   r   r.   r^   rf   rr   rt   r2   r/   r-   ú<module>r�      sÃ   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gð2
ð 2
ð 2
ðj*(ð *(ð *(ðZ"
ð "
ð "
ðJ%ð %ð %ðPð ð ð ð ˆUñ ô ð ð ð r/   