U
    qh                     @  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  s\  |d kr dd |j dd  D }|d krDdd |j dd  D d }|d krddd |j dd  D }t|t|  krdkrn n t|t|dd  ||d fS |d dkst|t|kr@t|}g }t|}t|D ]\\}	}
t|| |	 }||| || d |
d    |||	 ||	 d |
d    q|}t|t|dd  ||fS )Nc                 S  s   g | ]}d qS     .0sr   r   M/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/experimental/op_im2col.py
<listcomp>   s     zIm2Col._run.<locals>.<listcomp>   c                 S  s   g | ]}d qS )r   r   r	   r   r   r   r      s     c                 S  s   g | ]}d qS r   r   r	   r   r   r   r      s     r   r   )	shapeminmaxr   tuplelenlist	enumerateappend)selfimgZkernel_shapeZ	dilationsZpadsstridesZndZnew_kernel_shapeZ	new_shapeidZdir   r   r   _run   s(      "zIm2Col._run)NNN)__name__
__module____qualname__r   r   r   r   r   r   
   s   r   N)
__future__r   Z4onnx.reference.ops.experimental._op_run_experimentalr   Z.onnx.reference.ops_optimized.op_conv_optimizedr   r   r   r   r   r   <module>   s   