
    bIgg                    F    d dl mZ d dlZd dlmZ d dlmZ  G d de      Zy)    )annotationsN)OpRun)col2im_naive_implementationc                  &    e Zd Z	 	 	 	 	 	 	 	 	 ddZy)ConvTransposeNc                t
   ||j                   dd  D cg c]  }d }}||j                   dd  }| |j                   dd  D cg c]  }d c}dz  }||j                   dd  D cg c]  }d }}|
(|dvr$t        dt        |      z        D cg c]  }d }
}|
0|	7t        t        |            D cg c]  }|j                   |dz      ||   z   }	}t        t        |	            D cg c];  }||   |j                   |dz      dz
  z  ||   z   ||   dz
  ||   z  dz   z   |	|   z
  = }}g }g }t        t        |	            D ]p  }|dk(  r5|j                  ||   dz         |j                  ||   ||   dz  z
         =|j                  ||   ||   dz  z
         |j                  ||   dz         r ||z   }
t        |
      dz  }nt        |j                         dz
  }t	        j
                  t        |      D cg c]  }|
|   |
||z      f c}      }|	at        |      D cg c]M  }||   |j                   |dz      dz
  z  ||   z   ||   dz
  ||   z  dz   z   ||d d f   j                         z
  O }	}|j                   dd  }t	        j                  |      }|j                   d   |z  }||z  |z  }|j                   d   }|}t	        j                  |j                   dd        }||z  }|j                  |||f      }d }|dk(  rt        |j                   d         D ]  }|d   j                  }t	        j                  |||   j                  ||f            }|j                  |d|j                   d   f      }t        |      D ]k  } t        ||    |	|||
|      }!|?t	        j                  |j                   d d |fz   |!j                   z   |j                        }||!||    z  }!|!d   ||| df<   m  nt	        j                  |j                   d   |g|	      }g }"t        |      D ]z  }#|d d |#|z  |z  |#dz   |z  |z  df   }$||#|z  |z  |#dz   |z  |z  df   }%| j                  |$|%|||d|||	|
|	      }&t	        j
                  |&d         }&|"j                  |&       | t        |j                   d         D ])  }t        |      D ]  }#|"|#   }&|&|df   |||#|#dz   df<    + |j!                  |j                        fS c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )
N      r   >   
SAME_LOWER
SAME_UPPERr   )dtype.)	Bauto_pad	dilationsgroupkernel_shapeoutput_paddingoutput_shapepadsstrides)shaperangelenappendnparraysumprodreshapeTmatmulr   emptyr   zeros_runastype)'selfXWr   r   r   r   r   r   r   r   r   sitotal_paddingpads_1pads_2n_dimsnew_pads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_outputs'                                          a/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/reference/ops/op_conv_transpose.pyr%   zConvTranspose._run   s*    $%GGABK0q0I07712;L!)*5Aa59N?"#''!"+.Qq.G.<H,HH$QW%567!A7D7<#9>s7|9L 45AGGAENWQZ/    s<01
 	 
agga!enq01 #$ Oa'9Q<7!;= q/"M  FF3|,- 9|+MM-"2a"78MM-"2mA6F!6K"LMMM-"2mA6F!6K"LMMM-"2a"789 F?DY!^F\A%FxxeFm T$q'4F
+;!< TUH# #6] 
 	 AJ!''!a%.1"45$Q'($Q!+y|;a?A q!tn((*+    wwqr{ggl+ggaj50(E1K?
GGAJGGAGGABK JYYq!}-
 A:!!''!*- 7 mooyyak&9&91a&&AB&92tzz"~%NO23 7A5a,iwC } "GGBQK+>*@@399L"#''! }qt.1#hE(As*+7	7" HHaggaj*=MMNEL!%L 2Ax!|u417IU7RRTWWX)* (1) * 
   $yy%'!-#1!-#  )    "xxQ8##L1326 "!''!*-  %e H#/#9LFR #GE(H1$=sBC QWW%''c 1 6.7 ( !U s1   	T	T%	T	T!5T&,A T+T0+AT5)	NNNNNNNNN)__name__
__module____qualname__r%        rE   r   r      s%    
 @(rJ   r   )	
__future__r   numpyr   onnx.reference.op_runr   onnx.reference.ops.op_col2imr   r   rI   rJ   rE   <module>rO      s!    #  ' DA(E A(rJ   