
    
Ng                     B    d dl Zd dlmZ d dlmZ  G d de          ZdS )    N)OpRun)col2im_naive_implementationc                   (    e Zd Z	 	 	 	 	 	 	 	 	 ddZdS )ConvTransposeNc           
        	
  |dk    rt          d| d          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        j        d d         |fz   |j        z   j                  }||||         z  }|d         |||df<   nnt          d| d          |                    j                  fS )N   zgroup=z != 1 is not implemented yet.c                     g | ]}d S r    .0ss     `/var/www/html/ai-engine/env/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>B   s          
 	 AJ!'!a%.1"45$Q'($Q!+y|;a?A q!!!tn((**+     r   r   )dtype.zImplementation for group=z > 1 is not available yet.)RuntimeErrorr   rangelenappendnparrayprodreshapeTmatmulr   emptyr+   NotImplementedErrorastype)!selfr   WBauto_padr    groupr!   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resr%   r)   s!    `   ` `````                   @@r   _runzConvTranspose._run   s    A::LLLLMMM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 } "GBQBK+>*@@39L"#'! ! ! }qt.1#hE(As*++7	7" &MEMMM   QW%%''r   )	NNNNNNNNN)__name__
__module____qualname__rP   r   r   r   r   r      sK        
 a( a( a( a( a( a(r   r   )numpyr0   onnx.reference.op_runr   onnx.reference.ops.op_col2imr   r   r   r   r   <module>rW      su        ' ' ' ' ' ' D D D D D Db( b( b( b( b(E b( b( b( b( b(r   