
    !Sh-                     T    d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 d Z
d Zd ZdS )    N)	rearrangeparse_shapereduce)is_backend_tested)imp_op_backendsc                     d } d }d }d }d }d }d }d }d	 }d
 }	d }
d d d d d | |||||||||	|
fdfdfdfdg}t           D ]_}t          d|j                   |D ]C}t          j        d                              g d          } ||          }|                     ||                    |                              }t          j        ||          sJ t          j        d                              g d          }|j        dk    r|j        dk    rdnd}t          j	        d d dd d dd d dd d |f         } |||                   }|                     ||                    |          |                             }t          j        ||          sJ Ead S ) Nc                 Z    t          | d          }t          |j                  dk    sJ |S )Nb c h w -> b h w c
      (      r   tupleshapexys     `/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/einops/tests/test_examples.pytest1z&test_rearrange_examples.<locals>.test1
   s1    a-..QW~~!11111    c                 Z    t          | d          }t          |j                  dk    sJ |S )Nzb c h w -> b (c h w))r   i]  r   r   s     r   test2z&test_rearrange_examples.<locals>.test2   s1    a/00QW~~!33333r   c                 `    t          | ddd          }t          |j                  dk    sJ |S )Nz$b (c h1 w1) h w -> b c (h h1) (w w1)   h1w1)r      <   P   r   r   s     r   test3z&test_rearrange_examples.<locals>.test3   s8    a?A!LLLQW~~!88888r   c                 `    t          | ddd          }t          |j                  dk    sJ |S )Nz$b c (h h1) (w w1) -> b (h1 w1 c) h wr   r   )r   r"      r   r   r   s     r   test4z&test_rearrange_examples.<locals>.test4   s8    a?A!LLLQW~~!?????r   c                 Z    t          | d          }t          |j                  dk    sJ |S )Nz(b1 sound b2 letter -> b1 b2 sound letter)r   r   r   r   r   r   s     r   test5z&test_rearrange_examples.<locals>.test5"   s1    aCDDQW~~!11111r   c                     t          | d          }|d d d d df         }t          |j                  dk    sJ t          |dfi t          | d          }t          |j                  dk    sJ |S )Nzb c h w -> (b h w) cr   )i.  r   z(b h w) c2 -> b c2 h wzb _ h wr   r   r   r   )r   r   r   r   )r   tr   s      r   test6z&test_rearrange_examples.<locals>.test6(   s    a/00aaa1fIQW~~!33333a1OO[I5N5NOOQW~~!11111r   c                     t          | dd          \  }}t          |j                  dk    sJ t          |j                  dk    sJ ||z   S )Nzb (c g) h w -> g b c h wr   )gr*   r   )r   y1y2s      r   test7z&test_rearrange_examples.<locals>.test72   sX    18A>>>BRX"22222RX"22222Bwr   c                 b    t          | dddd          }t          |j                  dk    sJ |S )Nzb c (h h1) (w w1) -> b c h wmaxr   )	reductionr   r   )r   r   r%   r   )r   r   r   r   s     r   test8z&test_rearrange_examples.<locals>.test89   s;    14!PQRRRQW~~!;;;;;r   c                     t          | dd          }t          |j                  dk    sJ t          |d          }t          |j                  dk    sJ |S )Nzb c h w -> b c () ()r3   )r4   )r   r      r7   zb c () () -> c b)r   r   )r   r   r   r   r   s     r   test9z&test_rearrange_examples.<locals>.test9?   s^    1,>>>QW~~////a+,,QW~~))))r   c                 ~    t          | dz             }t          |d          }t          |j                  dk    sJ |S )Nr   r
   r   listr   r   r   r   tensorss     r   test10z'test_rearrange_examples.<locals>.test10G   sB    q1u++G%9::W]##'77777r   c                 ~    t          | dz             }t          |d          }t          |j                  dk    sJ |S )Nr   zb c h w -> h (b w) c)r   i  r   r:   r<   s     r   test11z'test_rearrange_examples.<locals>.test11N   sB    q1u++G%;<<W]##'88888r   c                 X     ||           } t          | d||          }  ||           } | S )Nzb (c1 c2) h w-> b (c2 c1) h w)c1c2r   )r   convolverB   rC   s       r   
shufflenetz+test_rearrange_examples.<locals>.shufflenetU   s8    HQKKa8RBGGGHQKKr   c                     t          | d          } t          | d|          }  ||           } t          | d|          } | S )Nb c t1 t2 -> b c (t1 t2)z b c (t stride) -> (stride b) c t)stridez (stride b) c t -> b c (t stride)rD   )r   rI   usual_convolutions      r   convolve_strided_1dz4test_rearrange_examples.<locals>.convolve_strided_1d\   sQ    a344a;FKKKa  a;FKKKr   c                 h    t          | d||          }  ||           } t          | d||          } | S )Nz$b c (h hs) (w ws) -> (hs ws b) c h w)hswsz$(hs ws b) c h w -> b c (h hs) (w ws)rD   )r   h_stridew_striderJ   s       r   convolve_strided_2dz4test_rearrange_examples.<locals>.convolve_strided_2dc   sG    a?HQYZZZa  a?HQYZZZr   c                     t          | d          } t          | dd          } ||          }| t          |dd          z   } | S )NrH   zb c (t dt) -> b (dt c) tr   )dtzb (dt c) t -> b c (t dt)rD   )r   rJ   r   s      r   unet_like_1dz-test_rearrange_examples.<locals>.unet_like_1di   sV    a344a3:::a  	!7A>>>>r   c                     | S )N )r   s    r   convolve_mockz.test_rearrange_examples.<locals>.convolve_mockr   s    r   c                 "     | dd          S )N   r    )rE   rB   rC   rV   )r   rW   rF   s    r   <lambda>z)test_rearrange_examples.<locals>.<lambda>   s    **Q1CCC r   c                       | d          S )Nr   )rI   rJ   rV   )r   rW   rK   s    r   rZ   z)test_rearrange_examples.<locals>.<lambda>   s    %%a]SSS r   c                 "     | dd          S )Nr   )rO   rP   rJ   rV   )r   rW   rQ   s    r   rZ   z)test_rearrange_examples.<locals>.<lambda>   s    %%a!aS`aaa r   c                      |           S )N)rJ   rV   )r   rW   rT   s    r   rZ   z)test_rearrange_examples.<locals>.<lambda>   s    ,,qMBBB r   ztesting source_examples for i )r   r   r   r   i  )r   r!   r   r   torchoneflowr7   r      )
r   printframework_namenumpyarangereshapeto_numpy
from_numpyarray_equal	index_exp)r   r   r#   r&   r(   r,   r1   r5   r8   r>   r@   testsbackendtestr   result1result2	last_stepindexing_expressionrW   rK   rQ   rF   rT   s                      @@@@@r   test_rearrange_examplesrr   	   s                                    	CCCCCSSSSSaaaaaBBBBBE$ # 7 7,g.DEEE 	7 	7D.//778H8H8HIIAd1ggG&&ttG,>,>q,A,A'B'BCCG$Wg66666 :;;CCDdDdDdeeA&5@@WE[_hEhEhopI"'/##A#sssCCaC92L"Md10122G&&ttG,>,>q,A,ABU,V'W'WXXG$Wg666666	77 7r   c                  J   t          j        g d          } dt           j        dk     rd S fd| j        D             }|d         d d d d d dd d f         |d<   |d         d d d d d d d df         |d<   |                     d| j        z             }|D ]}t          j        d	||          }|                    d          }|                     d          }|D ]G}|j        \  }}}}t          |d
||          }|t          |d          z  }t          |d||          }H|}	t          j        ||	          sJ | }|D ]4}|j        \  }}}}t          |d||          }|t          |d          z  }5|                    d          }
t          j        ||
          sJ d S )N)ra   rY   r       rY   z1.15.0c                 @    g | ]}t          j        ||g          S rV   )rd   ones).0dranks     r   
<listcomp>z.tensor_train_example_numpy.<locals>.<listcomp>   s,    	:	:	:Q%*aD$'
(
(	:	:	:r   r   r7   r`   )r7   zi j a b, a i ...  -> b ... jz (i rest alpha) -> rest (alpha i))alphaiz$i j alpha beta -> (alpha i) (j beta)zrest (beta j) -> (beta rest j))betajz"i ... (j alpha) -> ... j (alpha i))rd   rv   __version__r   rf   einsumr   allclose)r   Gsr   Gr/   r|   r~   r{   r}   r0   y3ry   s              @r   tensor_train_example_numpyr      s    	
<<<  AD8##	:	:	:	:!'	:	:	:BqE!!!QQQAAA+BqEVAAAqqq!!!RaRK BrF 	
		$.!!A ? ? L7A>>	
2B 	
		"A K KG1eTa;5ANNN	!CDDDa9JJJ	
B>"b!!!!! 	
A E EG1eTa=UaPPP	!CDDD	
2B>"b!!!!!!!r   c                     t          d          st          j                     dd lfd} fd}d}d}d}d}dd	gd	dgd
d
gg}t	          |          }                    ||d|z   z  ddg          } | ||||||          }	 |||||||          }
|	                    |
j                  }	                    |	|
          sJ d S )Nr^   r   c           	      6   |                      d          }|                      d          }|                      d          }fd|D             }	|                     ||d|z   ||                              ddddd                                          }
                    |
d                   }                    |
d	                   }|
d
         }|
d         }                    |
d                   }                    |
ddd f                   }|j        rj        j        nj        }|j        rj        j        nj        }	                    d|dz
  |          
                    |d          
                    ||z  dd                              |j                                      |          }	                    d|dz
  |          
                    |d                                          
                    ||z  dd                              |j                                      |          } ||	                              d |dg                    } ||	                              d |dg                    }|
                    |d          
                    dd||z                                |j                  }|
                    |d          
                    dd||z                                |j                  } ||
dd df         j                  }|j        |z   |d<   |j        |z   |d	<                       |j                  |z  |d
<                       |j                  |z  |d<                       gdz                                |          }                    |                    |dd          |z  |                    |dd          |                    |d|          fd          }|S )Nr   r   ra   c                 *    g | ]\  }}|z  |z  fS rV   rV   )rw   a_wa_hstride_hstride_ws      r   rz   z?test_pytorch_yolo_fragment.<locals>.old_way.<locals>.<listcomp>   s*    SSSxsC3>3>:SSSr   r    r7   rY   ).r   ).r7   ).r   ).ra   ).rY   .r`   )sizeviewpermute
contiguoussigmoidis_cudacudaFloatTensor
LongTensorlinspacerepeatr   typer+   index_selectdataexpTensorcat)inputnum_classesnum_anchorsanchorsr   r   bsin_hin_wscaled_anchors
predictionr   r   whconfpred_clsr   r   grid_xgrid_yanchor_wanchor_h
pred_boxes_scaleoutputr^   s       ``                    r   old_wayz+test_pytorch_yolo_fragment.<locals>.old_way   s   ZZ]]zz!}}zz!}}SSSSS7SSSZZK[$MMUUVWYZ\]_`bcddooqq
MM*V,--MM*V,--vv}}Z/00==CG!455 12	Pej,,u?P./iMUZ**U=M
 NN1dQh--VD!__VB$a++T!']]T+ 	 NN1dQh--VD!__QSSVB$a++T!']]T+ 	 ;~..;;Azz1#OO;~..;;Azz1#OO??2q))00Atd{CCHHQQ??2q))00Atd{CCHHQQ [C!G!4!:;;
Vf_
6Vf_
6"YYqv..9
6"YYqv..9
6x2Q677<<[II__RQ''&0$))BA2F2FVXZ\^iHjHjkmo
 
 r   c                    t          | d|          }                    |                              | j                  }t          |d          }|j        \  }}}}	}
t                              |	                                          d                              | j                  }t                              |
                                          d                              | j                  }                    |          }|d                                         |z   |z  |d<   |d                                         |z   |z  |d<   |dd	         	                                |z  |dd	<   |d	                                         |d	<   |d
d                                          |d
d <   t          |d          S )Nz5 b (anchor prediction) h w -> prediction b anchor h w)anchorz!anchor dim -> dim () anchor () ()zh -> () () h ()zw -> () () () wr   r7   r   rY   r    z2prediction b anchor h w -> b anchor h w prediction)
r   r   todevicer   re   float
zeros_liker   r   )r   r   r   r   r   r   raw_predictionsanchor_sizes_r   r   grid_hgrid_wpredicted_bboxesr^   s                 r   new_wayz+test_pytorch_yolo_fragment.<locals>.new_way   s   #E+bkvwww##G,,//== *MNN-31at5<<--33557HIILLU\ZZ5<<--33557HIILLU\ZZ ++O<<.q199;;fDP.q199;;fDP!01!5!9!9!;!;| K1-a088::.qrr2::<<)+_```r   rY   r       2   d   K   r7   )r   r   r   r   r   r   )	r   pytestskipr^   lenrandnrf   r   r   )r   r   r   r   
batch_sizer   r   r   r   rn   ro   r^   s              @r   test_pytorch_yolo_fragmentr      sB   W%% LLL3 3 3 3 3ja a a a a& HHJKCy3)b"X.Gg,,KKK[AO%DaKLLEg  G g  G oogm,,G>>'7+++++++r   )rd   r   einopsr   r   r   einops.testsr   einops.tests.test_opsr   rr   r   r   rV   r   r   <module>r      s      1 1 1 1 1 1 1 1 1 1 * * * * * * 1 1 1 1 1 1M7 M7 M7`&" &" &"Rg, g, g, g, g,r   