
    h>                     4    S SK rS SKJr  S r " S S\5      rg)    N)OpRunc                    Uc  U R                   SS   Vs/ s H  nSPM     nnUc  UR                   SS  nU	c#  U R                   SS   Vs/ s H  nSPM     snS-  n	U
c  U R                   SS   Vs/ s H  nSPM     n
nUc  SnUc  SnU R                   S S u  pUR                   S   nUR                   SS  nXR                   S   U-  :w  d  X-  S:w  a)  [        SU R                    SUR                    SU S35      eUR                   S   X-  nnX-  S:w  a  [        S5      eX-  nU[        R                  " U5      -  [	        U5      -  UR                   S   :w  a  [        S	UR                    S
U SU S35      eUR                  X/UQ[	        U5      PUQ75      nUc1  [        R                  " X[        R                  " U5      -  /UQ75      nUR                  X/UQUQ75      nSSKJn  [	        U R                   5      S:X  GaF  U R                   SS  u  nnUR                   SS  u  nnUu  nnU
u  nnUu  nnUS-
  U-  S-   US-
  U-  S-   nnU[        UU-
  U	S   -   U	S   -   U-  S-   5      :w  d$  U[        UU-
  U	S   -   U	S   -   U-  S-   5      :w  a  [        S5      eU	S   * U	S   * n!n [        R                  " XUU4U R                  S9n"Ub   UR                  S5      U"S S 2S S 2S S 2S S 24'   [        R                  " [        R                  " SUU5      [        R                  " SUU5      5      u  n#n$[        R                  " U$U#4SS9n%[!        U5       GH  n&[!        U5       GH  n'[!        U5       GH  n(U(U-  U'U-  :w  a  M  U(U-  n)[!        U5       GH  n*U UU*-  -   n+[!        U5       GH  n,U!UU,-  -   n-[        R"                  " U%5      R%                  [&        5      n.U.S S 2S S 2S4==   U+UU&U)S S 2S S 2SU*U,4   -   -  ss'   U.S S 2S S 2S4==   U-UU&U)S S 2S S 2SU*U,4   -   -  ss'   U.S S 2S S 2S4   US-
  -  S-  S-
  U.S S 2S S 2S4'   U.S S 2S S 2S4   US-
  -  S-  S-
  U.S S 2S S 2S4'   [        R(                  " U.S5      n.[        R*                  " U.S5      n.UR-                  U U&U&S-   2U(U(S-   24   U.SS9n/[        R.                  " U/UU'U(U-  S S 2S S 24   5      n0[        R.                  " U0UU&U)S S 2S S 2U*U,4   5      n0U"U&U'U*U,4==   [        R0                  " U05      -  ss'   GM     GM     GM     GM     GM     U"$ [        SU R                    SUR                    SU S35      es  snf s  snf s  snf )N      r   zShape inconsistencies, X.shape=z
, W.shape=z, group=.z;Number of input channels must be divisible by offset_group.zOffset shape z# is inconsistent with offset_group z and kernel shape )
GridSample      zKPadding, dilation, stride, and kernel shape incompatible with output shape.)dtype)r   r   r   )axis)align_cornerszThe convolution for X.shape=z, kernel_shape=z is not implemented yet.)shape
ValueErrornpprodlenreshapeonesonnx.reference.ops._op_listr   intRuntimeErrorzerosr   meshgridarangestackrangecopyastypefloatexpand_dimsflipevalmultiplysum)1XWoffsetBmask	dilationsgroupkernel_shapeoffset_grouppadsstridessnicocoutput_shapeics_per_groupocs_per_groupics_per_offset_groupr   ihiwohowkhkwsthstwdhdwkh_newkw_newbhbwreskernel_pos_wkernel_pos_hkernel_pos_wrt_first_elem	batch_idxoc_idxic_idxoffset_group_idxih_coordjw_coordkernelgrid_sample_output
conv_values1                                                    [/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_deform_conv.py_deform_conv_implementationrX      s(     !,1Q	,wwqr{|7712;';a;'!+ggabk*k1k*}GGBQKEA	
B<<#L	WWQZ%2:?-aggYj	RWQXXYZ
 	
 $%771:r{=M	AVWW-bggl++c,.??6<<PQ?RFLL>)L\N [  ,~Q0
 	
 ^^	
J<J\):J\JF |ww"'',*??O,OP<<G<G,GHD6
177|qBbc"BBSBq&B*R!VrMA,=rF{T!W,tAw6#=BCCrS6kDG#d1g-49N
 H
 ]  q'DG8Bhhr2agg6=ii6C1a
O &([[IIa$bii62&>&
"l %'HH<(q%
! qI)#BiF.&M2II  (.1E'E$"2Y"$sQw,!&rA&(37lG &(WW-F%G%N%Nu%UF"1a7O '"(4DaAqRS)S"T!UO #1a7O '"(4DaAqRS)S"T!UO /5Q1Woa.H1.Lq.PF1a7O.4Q1Woa.H1.Lq.PF1a7O%'^^FA%>F%'WW &&F 2< !)i!m";Vfqj=P"P Q &./ 2A 2. *, 2 !&&=*@!Q"F G*J *, * $Y0@!Q1%L M*J  	61a 78BFF:<NN8I "+ ' ( $ "f 


&qwwiz!'' C$~%=	? w - (*s   U7	U</Vc                   .    \ rS rSr        SS jrSrg)
DeformConv   Nc                     [        UR                  5      S:  a  [        SUR                   S35      e[        UUUUUUUUU	U
U5      4$ )Nr   z3X must have at least 3 dimensions but its shape is r   )r   r   r   rX   )selfr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   s               rW   _runDeformConv._run   sf     qww<!EaggYaP  (
 	
     )NNNNNNNN)__name__
__module____qualname____firstlineno__r^   __static_attributes__ra   r`   rW   rZ   rZ      s!      
r`   rZ   )numpyr   onnx.reference.op_runr   rX   rZ   ra   r`   rW   <module>ri      s      'BJ!
 !
r`   