
    /j.                    N    d dl mZ d dlZd dlmZ d dlmZ  G d de          ZdS )    )annotationsN)OpRun)col2im_naive_implementationc                  (    e Zd Z	 	 	 	 	 	 	 	 	 ddZdS )ConvTransposeNc                	  	
$% d j         dd          D             |j         dd          d j         dd          D             dz  d j         dd          D             
-|dvr)d t          dt                    z            D             

$	)fdt          t                              D             		fdt          t          	                    D             }g }g }t          t          	                    D ]}|d	k    rF|                    ||         dz             |                    ||         ||         dz  z
             N|                    ||         ||         dz  z
             |                    ||         dz             ||z   
t          
          dz  $ngt          j                   dz
  $t	          j        $
fd
t          $          D                       %	 %fdt          $          D             	|j         dd          t	          j                  }|j         d         |z  }||z  |z  }j         d         }|}t	          j        j         dd                    }||z  }|                    |||f          }d }|dk    rt          j         d                   D ]}|d         j        }t	          j	        ||                             ||f                    }|                    |d|j         d         f          }t          |          D ]m}t          ||         	
          }|4t	          j        g j         d d         ||j         R j                  }||||         z  }|d         |||df<   nnt	          j        j         d         |g	R           }g }t          |          D ]} d d | |z  |z  | dz   |z  |z  df         }!|| |z  |z  | dz   |z  |z  df         }"|                     |!|"||d	
          }#t	          j        |#d                   }#|                    |#           t          j         d                   D ]1}t          |          D ]} ||          }#|#|df         ||| | dz   df<    2|                    j                  fS )Nc                    g | ]}d S     .0ss     i/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/reference/ops/op_conv_transpose.py
<listcomp>z&ConvTranspose._run.<locals>.<listcomp>   s    000q000       c                    g | ]}d S r   r   r   s     r   r   z&ConvTranspose._run.<locals>.<listcomp>    s    555Aa555r   c                    g | ]}d S r
   r   r   s     r   r   z&ConvTranspose._run.<locals>.<listcomp>"   s    ...Qq...r   >   
SAME_LOWER
SAME_UPPERc                    g | ]}d S r   r   )r   is     r   r   z&ConvTranspose._run.<locals>.<listcomp>$   s    777!A777r   c                B    g | ]}j         |d z            |         z  S )r   shape)r   r   Xstridess     r   r   z&ConvTranspose._run.<locals>.<listcomp>'   s9          45AGAENWQZ/     r   c                    g | ]H}|         j         |d z            dz
  z  |         z   |         dz
  |         z  dz   z   |         z
  IS )r   r   r   )r   r   r   	dilationskernel_shapeoutput_paddingoutput_shaper   s     r   r   z&ConvTranspose._run.<locals>.<listcomp>*   s}       
 	 
aga!enq01 #$ Oa'9Q<7!;= q/"  r   r   c                6    g | ]}|         |z            fS r   r   )r   r   n_dimspadss     r   r   z&ConvTranspose._run.<locals>.<listcomp>>   s+     T T T$q'4F
+;!< T T Tr   c                    g | ]^}|         j         |d z            dz
  z  |         z   |         dz
  |         z  dz   z   |ddf                                         z
  _S )r   r   N)r   sum)r   r   r   r!   r"   new_padsr#   r   s     r   r   z&ConvTranspose._run.<locals>.<listcomp>@   s          
 	 AJ!'!a%.1"45$Q'($Q!+y|;a?A q!!!tn((**+     r   r   r   )dtype.)	Bauto_padr!   groupr"   r#   r$   r'   r   )r   rangelenappendnparrayprodreshapeTmatmulr   emptyr,   zeros_runastype)&selfr   Wr-   r.   r!   r/   r"   r#   r$   r'   r   total_paddingpads_1pads_2r   kernel_sizenum_output_channels
kernel_dimCmnk
w_reshapedfinalimage_idw_tgemmgemmccresoutput_arraygroup_idgroup_Xgroup_Wgroup_outputr&   r*   s&    `   ` `````                        @@r   r;   zConvTranspose._run   s    00AGABBK000I7122;L!555559N?..!'!""+...G<H,HHH77uQW%566777D<#         9>s7||9L9L             
 s<0011  M FF3|,,-- 9 9|++MM-"2a"7888MM-"2mA6F!6K"LMMMMMM-"2mA6F!6K"LMMMMM-"2a"78888F?DYY!^FF\\A%Fx T T T T TeFmm T T TUUH#                 
 #6]]      wqrr{gl++gaj50(E1K?
GAJGAGABBK  JYYq!}--
 A::!!'!*-- 7 7 moyak&9&91a&&A&ABB&92tz"~%NOO233 7 7A5a,iw C } "KagbqbkK+>KKK"#'! ! ! }qt.1#hE(As*++7	7" Hagaj*=MMMNNEL!%LL 2 2AAAx!|u417IU7RRTWWX22e;x!|)?*?    $yy%'!-#1!-#  )      "xQ88##L1111!!'!*--   %e  H#/#9LFR #GE(H1$=sBCC QW%%''r   )	NNNNNNNNN)__name__
__module____qualname__r;   r   r   r   r   r      sK        
 ~( ~( ~( ~( ~( ~(r   r   )	
__future__r   numpyr3   onnx.reference.op_runr   onnx.reference.ops.op_col2imr   r   r   r   r   <module>r]      s    # " " " " "     ' ' ' ' ' ' D D D D D D( ( ( ( (E ( ( ( ( (r   