o
    to™i~  ã                   @  s8   d dl mZ d dlmZ d dlmZ G dd„ deƒZdS )é    )Úannotations)ÚOpRunExperimental)Úim2col_fastc                   @  s   e Zd Zddd„ZdS )ÚIm2ColNc                 C  sZ  |d u rdd„ |j dd … D ƒ}|d u r"dd„ |j dd … D ƒd }|d u r2dd„ |j dd … D ƒ}t|ƒt|ƒ  kr@dkrRn nt|t|dd … ƒ||ƒd fS |d dks`t|ƒt|ƒkrŸt|ƒ}g }t|ƒ}t|ƒD ].\}	}
t|ƒ| |	 }| || || d |
d   ¡ | ||	 ||	 d |
d   ¡ qn|}t|t|dd … ƒ||ƒfS )Nc                 S  ó   g | ]}d ‘qS ©é   © ©Ú.0Úsr	   r	   ú]/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/experimental/op_im2col.pyÚ
<listcomp>   ó    zIm2Col._run.<locals>.<listcomp>é   c                 S  r   )r   r	   r
   r	   r	   r   r      r   c                 S  r   r   r	   r
   r	   r	   r   r      r   r   r   )	ÚshapeÚminÚmaxr   ÚtupleÚlenÚlistÚ	enumerateÚappend)ÚselfÚimgÚkernel_shapeÚ	dilationsÚpadsÚstridesÚndÚnew_kernel_shapeÚ	new_shapeÚiÚdÚdir	   r	   r   Ú_run   s(     "ÿzIm2Col._run)NNN)Ú__name__Ú
__module__Ú__qualname__r%   r	   r	   r	   r   r   
   s    r   N)Ú
__future__r   Ú4onnx.reference.ops.experimental._op_run_experimentalr   Ú.onnx.reference.ops_optimized.op_conv_optimizedr   r   r	   r	   r	   r   Ú<module>   s   