
    Si                    F    S SK Jr  S SKrS SKJr  S rS r " S S\5      rg)    )annotationsN)OpRunc                   [        U 5      S:H  n[        R                  " U 5      n[        R                  " U 5      /n[	        U 5       GH  u  pVUS:X  a$  SUS-
  -  nSnSn	[        R
                  " XU5      n
O&SU-  nSUS-  -   nSn	[        R
                  " XU5      n
US:X  aL  U(       a"  [        R                  " XS45      U-   nU/UQnM  [        R                  " XSS45      U-   nU/UQnM  US:X  aN  U(       a#  [        R                  " U
SU45      U-   nU/UQnM  [        R                  " U
SUS45      U-   nU/UQnM  [        R                  " U
SU45      U-   nU/UQnGM      [        R                  " XB(       a  SS9$ SS9$ )	N      g       @gqh ?r      )axis)lennpzerosones	enumeratearangereshapestack)	data_sizealign_cornersis_2d
size_zerosoriginal_griddimdim_sizestepstartstopayzxs                 `/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/reference/ops/op_affine_grid.pyconstruct_original_gridr"      s   	NaE)$JWWY'(M"9-A(Q,'DED		%t,A>DMED		%t,A!8JJqQ-0:=!" 3] 3JJqQ"23j@!" 3] 3AXJJq1h-0:=!" 3] 3JJq1h"23j@!" 3] 3

1q(m,z9A//M7 .8 88MU::::    c                   U R                   S:X  d   S5       eUR                   S:X  a  U R                  u  p#nUS:X  a  US:X  d   eUR                  u  pVnUS:X  d   e[        R                  " [        R                  " XU-  U45      5      n[        R
                  " X5      n[        R                  " [        R                  " US5      X%Xc45      n	U	R                  [        R                  5      $ UR                   S:X  d   eU R                  u  p*nU
S:X  a  US:X  d   eUR                  u  ppdUS:X  d   e[        R                  " [        R                  " XU-  U-  U45      5      n[        R
                  " X5      n[        R                  " [        R                  " US5      X+XVU
45      n	U	R                  [        R                  5      $ )Nr	   z>theta_n shall have shape of (N, 2, 3) for 2D, (N, 3, 4) for 3Dr   )r   r   r      )ndimshaper   	transposer   matmulastypefloat32)theta_noriginal_grid_homoNdim_2ddim_homoHWoriginal_grid_transposedgrid_ngriddim_3dDs               r!   apply_affine_transformr8   .   s    <<1 H !#%mm8{x1},,+11h1}}#%<<JJ)E8+<=$
  
 zz",,vy9A!;LM{{2::&&""a'''!--AxQ;8q=((*00A!q==!||


%A	8'<=  YYF ::bll695aF7KLD;;rzz""r#   c                      \ rS rSrSS jrSrg)
AffineGridT   Nc                f    U=(       d    U R                   nUt  pE[        XS5      n[        X5      nU4$ N)r   r"   r8   )selfthetasizer   _r   r   r5   s           r!   _runAffineGrid._runU   s7    %;););1/	I%e;wr#    r=   )__name__
__module____qualname____firstlineno__rB   __static_attributes__rD   r#   r!   r:   r:   T   s    r#   r:   )	
__future__r   numpyr   onnx.reference.op_runr   r"   r8   r:   rD   r#   r!   <module>rM      s(    #  ' ;F##L r#   