
    &Vf!0                    v
   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ  ej        e	j        j                  d             ZddZ ej        d          d             Z d Z! ej        ej"                  d             Z#d Z$ej%        d             Z&ddZ'ddZ(ddZ)ddZ*ej+        d             Z,d Z-ddZ.ddZ/ddZ0ddZ1dd Z2dd"Z3 ej4        d#ej5        z            d$             Z6 ej4        ej7                  d%             Z8ej+        d&             Z9ej+        d'             Z:ej+        d(             Z;d) Z<ej+        d*             Z=d+ Z>dd,Z?dd-Z@dd/ZAdd0ZBdd1ZCd2 ZDej+        d3             ZEd4 ZFdd5ZGej+        d6             ZHej+        d7             ZIej+        d8             ZJ ej4        d!          d9             ZK ej4        d!          d:             ZLdd;ZMdd<ZNdd=ZOdd>ZPdd?ZQdd@ZRddAZSdB ZTdC ZUddDZVdE ZW ej4        d!          dF             ZXdG ZYej+        dH             ZZddIZ[ej+        dJ             Z\ddKZ]ddLZ^dM Z_dN Z`dO ZaddPZbej+        dQ             ZcdR Zd ej4        dS          dT             ZedU ZfdV ZgdW ZhdX Zi	 ddZZj ej4        ejk                   d[             Zl ej4        ejk                   d\             Zmej+        d]             Zn ej4        ejk                   d^             Zod_ Zpd` Zqda Zrdb ZsdddZt ej        e	j        ju        dSe          df             ZuddgZvdhdidjZwddkZx ej        e	j        jy        dSe          dl             Zydm Zzdn Z{ddpZ|dq Z}dr Z~ds ZddtZdduZdv ZddxZddyZdd{Zdd|Zd} Zej+        d~             Z ej4        ejk                  d             ZddZd ZddZej+        d             Zej+        d             Zej+        d             Zd ZddZddZddZddZd ZddZddZej+        d             Zej+        d             ZddZej+        dd            Zd ZddZddZddZddZd Zd ZddZddddZd Zej        d             Zd Zd Zd Zej+        d             Zej+        d             Zej+        d             ZddZddZddZddZddZd Zd ZddZddZd ZdS )    N)sparse_csr_matrix_ops)tree)config)standardize_dtype)dtypescanonicalize_axis)to_tuple_or_list)vectorize_implsparse)castconvert_to_tensorc           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S Ndtype)

isinstanceintfloatr   r   result_typegetattrtypetfaddx1x2r   s      _/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/tensorflow/numpy.pyr   r      s    b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E 
2u	%	%B	2u	%	%B6"b>>    Fc                    t          |           } | j        g}t          | j                  dvrt          j        | t          j                  } |t          |          }|                    |j                   t          j        | }t          |j                  dvrUdt          |j                  v r t          j        |t          j                  }n"t          j        |t          j	                  }nd}|st          | t          j                  rt          j                            | ||d          }|j        d         }|t          j        |          d         }t	          ||          }| j        j        dk    r|f}n-|j        d         }	|	t          j        |          d         }	|	|f}t          j        |j        |j        |	          S t          j        t          j                            | ||d          |          S )
N)int32int64)r"   r#   float32float64r   r"   )weights	minlengthaxis   r   indicesvaluesdense_shape)r   r   r   r   r   r"   appendr   r   r$   r   SparseTensorr   bincountshaperankr,   r-   math)
xr'   r(   r   dtypes_to_resolver   outputactual_lengthoutput_shape
batch_sizes
             r   r1   r1   '   s   !A	!!);;;GArx  #G,,  ///"$56W]++ 4
 
 
 )'-8888''2844''2:66 
Ar// 
##	 $ 
 
 R( HV,,R0Mfe$$7<1)+LLaJ!Xf--a0
&6LN=$
 
 
 	

 7
GyrJJ  r    i   c                     i }d}| D ]G}|t           j        v r2||vr"t           j        t          |                   ||<   |||         z  }B||z  }H|S )N )stringascii_letterslen)
subscriptsmappingnormalized_subscriptscs       r   _normalize_einsum_subscriptsrD   Y   st     G ' '$$$#1#g,,?
!WQZ/!!!Q&!!  r    c                 b  	 t          j        t          |          }t          |           } d }d }t	          t          d |D                                 }t          |          dk    r|d         dk    rd	d}d}nt          j        | }|	d } || g|R  r@|s>d	v r|t          j
                    	t          j        	fd	|          } || g|R d
|i}nDd	v rt          j
                    	t          j        	fd|          }t          j        | g|R i |}t          j        ||          S )Nc                 T   | dv rdS | dk    r;|d         j         \  }}}|d         j         \  }}}||p|||f\  }}	}
}d ||	|
|fv rdS dS | dk    r;|d         j         \  }}}|d         j         \  }}}||p|||f\  }}	}
}d ||	|
|fv rdS dS | dk    r;|d         j         \  }}}|d         j         \  }}}||p|||f\  }}	}
}d ||	|
|fv rdS dS | d	k    r>|d         j         \  }}}}|d         j         \  }}}||p||p||f\  }}	}
}d ||	|
|fv rdS dS | d
k    r>|d         j         \  }}}}|d         j         \  }}}||p||p||f\  }}	}
}d ||	|
|fv rdS dS | dk    r>|d         j         \  }}}}|d         j         \  }}}||p||p||f\  }}	}
}d ||	|
|fv rdS dS | dk    rC|d         j         \  }}}}}|d         j         \  }}}}|p||||p||f\  }}	}
}}d ||	|
||fv rdS dS | dk    rC|d         j         \  }}}}}|d         j         \  }}}}||p|||p||f\  }}	}
}}d ||	|
||fv rdS dS dS )N)a,b->abab,b->a	ab,bc->ac	ab,cb->acabc,cd->abdabc,dc->abdabcd,abde->abceabcd,abed->abceabcd,acbe->adbeabcd,adbe->acbeabcd,aecd->acbeabcd,aecd->acebTabc,cde->abder   r*   Fabc,dce->abdeabc,dec->abdeabcd,cde->abeabcd,ced->abeabcd,ecd->abeabcde,aebf->adbcfabcde,afce->acdbfr2   )r@   operands_b1c1c2d2e2brC   ded1e1b2f2fs                    r   is_valid_for_custom_opsz'einsum.<locals>.is_valid_for_custom_opsl   s     
 
 
 4?** )IAr2!!*JBBRX2r2-JAq!Q1a|##u4?** )IAr2!!*JBBRX2r2-JAq!Q1a|##u4?** )IAr2!!*JBBRX2r2-JAq!Q1a|##u4?**$QK-MAr2r!!*JBBRX2rxR3JAq!Q1a|##u4?**$QK-MAr2r!!*JBBRX2rxR3JAq!Q1a|##u4?**$QK-MAr2r!!*JBBRX2rxR3JAq!Q1a|##u4... ( 1Ar2r2$QK-MAr2rH"b"bhB:MAq!Q1aA&&u4... ( 1Ar2r2$QK-MAr2rb"bhB:MAq!Q1aA&&u4 5r    c                   |d         |d         }}| dk    rCt          j        |d          }t          j        |d          }t          j        |||          S | dk    rCt          j        |d          }t          j        |||          }t          j        |d          S | dk    rt          j        |||          S | d	k    r.t          j        |ddg          }t          j        |||          S | d
k    rt          j        |||          S | dk    rj|j        \  }}}|j        \  }	}
}||p|	|
|f\  }}}}t          j        ||dg          }t          j        |||          }t          j        |d|||g          S | dk    r.t          j        |ddg          }t          j        |||          S | dk    r|j        \  }}}|j        \  }
}	}||p|	|
|f\  }}}}t          j        |g d          }t          j        ||dg          }t          j        |||          }t          j        |d|||g          S | dk    r|j        \  }}}|j        \  }
}}	||p|	|
|f\  }}}}t          j        |g d          }t          j        ||dg          }t          j        |||          }t          j        |d|||g          S | dk    rt          j        |||          S | dk    r.t          j        |g d          }t          j        |||          S | dk    r\t          j        |g d          }t          j        |g d          }t          j        |||          }t          j        |g d          S | dk    rEt          j        |g d          }t          j        |||          }t          j        |g d          S | dk    rEt          j        |g d          }t          j        |g d          }t          j        |||          S | dk    r\t          j        |g d          }t          j        |g d          }t          j        |||          }t          j        |g d          S | dk    ro|j        \  }}}}|j        \  }	}
}||p|	|p|
|f\  }}}}t          j        |d|||z  g          }t          j        |d|g          }t          j        |||          S | dk    r|j        \  }}}}|j        \  }	}}
||p|	|p|
|f\  }}}}t          j        |d|||z  g          }t          j        |g d          }t          j        |d|g          }t          j        |||          S | dk    r|j        \  }}}}|j        \  }}	}
||p|	|p|
|f\  }}}}t          j        |d|||z  g          }t          j        |g d          }t          j        |d|g          }t          j        |||          S | dk    r|j        \  }}}}}|j        \  }}}}|p||||p||f\  }}}}}t          j        |d|||z  |g          }t          j        |g d          }t          j        |||          }t          j        |d||||g          }t          j        |g d           S | d!k    r|j        \  }}}}}|j        \  }}}	}||p|	||p||f\  }}}}}t          j        |g d"          }t          j        |d|||z  |g          }t          j        |g d          }t          j        |||          }t          j        |d||||g          S t          )#Nr   r*   rG   r&   r)   output_typerH   rI   rJ   rK   rS   rL   rT   )r*   r      rU   )rp   r   r*   rM   rN   )r   r*      rp   rO   )r   rp   r*   rq   rP   rQ   )r   rp   rq   r*   rR   rV   rW   )r   rp   r*   rX   )r*   rp   r   rY   )r   rq   r*   rp      rZ   )r   rp   rq   r*   rr   )r   expand_dimsmatmulsqueeze	transposer2   reshapeNotImplementedError)r@   ro   r\   r5   yresultr]   r^   r_   r`   ra   rb   rc   rC   rd   re   rf   rg   rh   ri   rj   s                        r   use_custom_opszeinsum.<locals>.use_custom_ops   s2    {HQK1""qr***Aqq)))A9Q{;;;;9$$qr***AYq!===F:f2....;&&9Q{;;;;;&&QA''A9Q{;;;;=((9Q{;;;;?**IAr2JBBRX2r2-JAq!Q
1q"g&&AYq!===F:fr1am444=((QA''A9Q{;;;;?**IAr2JBBRX2r2-JAq!QQ			**A
1q"g&&AYq!===F:fr1am444?**IAr2JBBRX2r2-JAq!QQ			**A
1q"g&&AYq!===F:fr1am444,,,9Q{;;;;,,,Q--A9Q{;;;;,,,Q--AQ--AYq!===F<555,,,Q--AYq!===F<555,,,Q--AQ--A9Q{;;;;,,,Q--AQ--AYq!===F<555?**GMAr2rJBBRX2rxR3JAq!Q
1r1a!en--A
1r1g&&A9Q{;;;;?**GMAr2rJBBRX2rxR3JAq!Q
1r1a!en--AQ			**A
1r1g&&A9Q{;;;;?**GMAr2rJBBRX2rxR3JAq!Q
1r1a!en--AQ			**A
1r1g&&A9Q{;;;;... !Ar2r2GMAr2rH"b"bhB:MAq!Q
1r1a!eQ/00AQ--AYq!===FZQ1a(899F<888... !Ar2r2GMAr2rb"bhB:MAq!QQ00A
1r1a!eQ/00AQ--AYq!===F:fr1aA&6777%%r    c              3   >   K   | ]}t          |j                  V  d S N)r   r   .0r5   s     r   	<genexpr>zeinsum.<locals>.<genexpr>+  s-       N N!217!;!; N N N N N Nr    r*   r   int8r"   r   c                 .    t          j        |           S r}   r   r   r5   compute_dtypes    r   <lambda>zeinsum.<locals>.<lambda>>      bga// r    ro   c                 .    t          j        |           S r}   r   r   s    r   r   zeinsum.<locals>.<lambda>F  r   r    )r   map_structurer   rD   listsetr?   r   r   r   floatxr   einsumr   )
r@   r\   kwargsrk   r{   r6   result_dtypero   rz   r   s
            @r   r   r   h   s   !"3X>>H-j99JM M M^n& n& n&` S N NX N N NNNOO ""'8';v'E'E)+<=$ z5H555 <f < M!!k&9"MOOM%////
 
  
OXOOO;OO M!!"MOOM%////
 
 :;;;;F;;76<(((r    c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S r   )
r   r   r   r   r   r   r   r   r   subtractr   s      r   r   r   L      b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E 
2u	%	%B	2u	%	%B;r2r    c                 `   t          |           } t          |          }| j        }|j        }t          | t          j                  }t          |t          j                  }t          | j                  }t          |j                  }|dk    r'|dk    r!|s|s|j        dk    r|j        dk    rd}d}	|	}
nFt          j	        | j        |j        t                    }t          j	        | j        |j                  }	d }
t          j        | |          } t          j        ||          }d }d }d }d }|s|rdd	lm}  |||          }|r)|r'|j        d
k    r || |          }n| || |||          }nm|r|j        n|j        }|r|dk    r || |          }nH|dk    r!t          j                            | |          }n!|d
k    r || |          }n || |||          }t          j        ||	          }|                    |           |S |j        dk    r#|j        dk    rt          j        | ||
          }na|j        dk    rt          j        | |d          }n>|j        dk    rt          j        | |dgdgg          }nt          j        | ||
          }t          j        ||	          S )Nr   r*   r"   c                    t          | t          j                  }t          |t          j                  }|r|j        d d         n| j        d d         }t	          j        |          }|g| j        dd          z   }|r t          j                            | |          nt          j        | |          }	|g|j        dd          z   }
|r t          j                            ||
          nt          j        ||
          } ||	|          }t          |t          j                  r t          j                            ||          nt          j        ||          S )N)r   r   r0   r2   r4   prodr   rw   )arc   r9   fn_3da_sparseb_sparsebatch_shaper:   	a3d_shapea_3d	b3d_shapeb_3d	result_3ds                r   with_combined_batch_dimensionsz.matmul.<locals>.with_combined_batch_dimensionsy  sA   a11a11&.@agcrcllAGCRCLY{++
L17233</	 *BIa+++Ay)) 	
  L17233</	 *BIa+++Ay)) 	
 E$%%	 )R_555BIi666I|44	
r    c                 N   | j         j        }t          j        | j        | j         | j                  }t          j        |j        |j         |j                  }t          j        |||          }t          j        ||          }t          j	        |j        |j         |j                  S r}   )
r-   r   r   "sparse_tensor_to_csr_sparse_matrixr,   r.   sparse_matrix_sparse_mat_mul"csr_sparse_matrix_to_sparse_tensorr   r0   )r   rc   r   a_csrb_csr
result_csrress          r   sparse_sparse_matmulz$matmul.<locals>.sparse_sparse_matmul  s    %HIqx
 
 &HIqx
 
 +G5%
 

 $F
 
 s{CJHHHr    c                     t           j                            | d          \  } }t          j        | j        | j        d d df         | j                  }t           j                            ||| d          S )Nr   r*   r+   sum)combiner)r   r   fill_empty_rowsr0   r,   r.   nnembedding_lookup_sparse)r   rc   r]   idss       r   $embedding_lookup_sparse_dense_matmulz4matmul.<locals>.embedding_lookup_sparse_dense_matmul  ss     y((A..1 oI9QQQT?
 
 

 u,,QQ,GGGr    c                 @    t          j        d | |f| j                  S )Nc                 Z    t           j                            | d         | d                   S )Nr   r*   )r   r   sparse_dense_matmulr5   s    r   r   z8matmul.<locals>.sparse_dense_matmul_3d.<locals>.<lambda>  s     bi33AaD!A$?? r    )elemsfn_output_signature)r   map_fnr   )r   rc   s     r   sparse_dense_matmul_3dz&matmul.<locals>.sparse_dense_matmul_3d  s-    y??a& !
 
 
 	
r    r   )compute_matmul_output_shaperq   rp   rn   axesr   )r   r2   r   r   r0   r   r   r3   r   r   r   r   keras.src.ops.operation_utilsr   r   r   	set_shapert   	tensordot)r   r   x1_shapex2_shape	x1_sparse	x2_sparsex1_dtypex2_dtyper   r   ro   r   r   r   r   r   r9   r7   sparse_ranks                      r   rt   rt   [  sM   	2		B	2		BxHxH2r//I2r//I !**H **HF   MQMQ" *28RXuEE)"(BH==	]	#	#B	]	#	#B
 
 
0I I I&H H H"
 
 
  &-I &-MMMMMM228XFF 	 	}!!--b"5577L*> 
 ,5G(--(-K  	[A--==b"EE!!66r2>>!!//B7777L*@  ..&&&=A(-1"4"4Yr2;???FF]a\"bq111FF]a\"bbT{;;;FFYr2;???Fwv|,,,r    c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S r   )
r   r   r   r   r   r   r   r   r   multiplyr   s      r   r   r     r   r    c           	         t          | t          j                  rPt          j        | j        |          }|t          j        t          j        | j                  |j                  z  S t                    s| S t          j
        | j                  }t          j        |          d         fdD                                              dgk    r@t          j        | j        d|          }|t          j        |d         |j                  z  S d         dk    rWt          j        | j        dd          }|t          j        |d         |j                  z  }t          j        ||          S |rdt          j        | j        d          }t          j        |dd         |j        dd          gd          }t          j        || j        |          S t!                    dz   k    rOt          j        t          j        | j        d          t          j        | j                  |d         g          S fd	t'                    D             }t          j        t          j        | j                  | j        t          j        | j        |d                    S t          |           } t+          | j                  }	t-          j        | j        d
          }
d|	v s|	dk    r|
}n|	}t          j        t          j        | |
          |          }t          j        ||          S )N)keepdimsr   r   c                 0    g | ]}t          |          S  r   )r   r   r3   s     r   
<listcomp>zmean.<locals>.<listcomp>  s$    999q!!T**999r    r)   r   Tr*   rm   c                     g | ]}|v|	S r   r   )r   ir)   s     r   r   zmean.<locals>.<listcomp>,  s    FFFAar    r$   r   bool)r   r   IndexedSlices
reduce_sumr-   r   reduce_prodr.   r   r
   r   r2   sortreduce_meanconcatr,   r?   
scatter_ndrs   rangegatherr   r   r   )r5   r)   r   r   r.   axis_0_mean
new_valuesnew_dense_shapegather_indices	ori_dtyper   r   r7   r3   s    `           @r   meanr     s+   !R%&& << -8<<<C!>!>ciPPPPP%% 	H*1=99x$$Q'9999D999		A3;; -q8DDDCQsyAAAAA!W\\ -q4@@@CAci H H HHK>+D8LLLL 	 tdKKKJ iQqS!:#3ABB#78q  O #J	?KKKSYY]"" =qyq111qxd333Q    GFFFtFFFN#qxd333		!-a@@@  
 	!A!!'**I&qw	::M 	Y&00$ ^
=!!x  F 76<(((r    c                    t          |           } |t          | j                  dk    rrt          j        | ||          } t          j                            t          j        | d          t          j        |d                    } t          j        | d          S t          j        | ||          } t          j                            | |          S t          j	                    r?t          |           }t          j        |t          j        d|j                  d           t          | j                  dk    rt          j        | ||          S t          j        | ||          S )Nr   r   r"   r   r   z*Cannot compute the max of an empty tensor.message)r   r   r   r   
reduce_anyr4   maximumr   
reduce_maxexecuting_eagerlysizeassert_greaterconstantr5   r)   r   initialsize_xs        r   maxr   A  sD   !A QW%%//adX>>>A7 3 3RWWg5N5NOOA71f%%%adX>>>A7??1g... 
 
a
K...@	
 	
 	
 	
 !!V++}QTH====}QTH====r    c                 X    |pt          j                    }t          j        | |          S Nr   )r   r   r   onesr2   r   s     r   r   r   _  s'    $V]__E75&&&&r    c                 X    |pt          j                    }t          j        | |          S r   r   r   r   zerosr   s     r   r   r   d  '    $V]__E8E''''r    c                     t          |           } t          | j                  }d|v s|dk    r| S t          j        |           S )Nuintr   )r   r   r   r   absr5   r   s     r   absoluter   i  sB    !Aag&&E%6//6!99r    c                      t          |           S r}   )r   r   s    r   r   r   s  s    A;;r    c                 Z    t          j        | d          } t          j        | ||          S Nr   r   )r   r   
reduce_allr5   r)   r   s      r   allr  w  *    
6A=9999r    c                 Z    t          j        | d          } t          j        | ||          S r   )r   r   r   r  s      r   anyr  |  r  r    c                 &    t          | ||          S Nr   )r   r  s      r   amaxr	        qth////r    c                 &    t          | ||          S r  )minr  s      r   aminr    r
  r    c                    t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }|@t	          j        t	          j        | dg          t	          j        |dg          gd          S t	          j        | |g|          S )Nr&   r   rm   )r   r   r   r   r   r   r   rw   )r   r   r)   r   s       r   r/   r/     s    	2		B	2		Brx22E	U		B	U		B|y"*R"..
2t0D0DEANNNNy"b----r    r*   c           	         |}t          | dt          |                     t          |dt          |                    g}|1|                    t          |dt          |                               t          j        | }t          |          }	 t          j        | |||          }nG# t          j        j	        $ r0 t          j        | ||d          }t          j
        ||          }Y nw xY w|S )Nr   )deltar   r$   )r   r   r/   r   r   r   r   r   errorsNotFoundErrorr   )startstopstepr   r6   outs         r   aranger    s    }E7DKK00D'4::..
 $$WT7DJJ%G%GHHH"$56e$$E"hud$e<<<9" " " "hud$i@@@gc5!!" Js   B) )AC-,C-      ?c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S Nr#   )r   r   r   r   r   r   r   r   r   r   r4   acosr   s     r   arccosr    h    !A!!W,,"17E22
5A7<<??r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   acoshr   s     r   arccoshr     j    !A!!W,,"17E22
5A7==r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   asinr   s     r   arcsinr$    r  r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   asinhr   s     r   arcsinhr'    r!  r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   atanr   s     r   arctanr*    r  r    c                    t          |           } t          |          }t          j        | j        |j        t                    }t          j        | |          } t          j        ||          }t
          j                            | |          S r}   )	r   r   r   r   r   r   r   r4   atan2r   s      r   arctan2r-    sl    	2		B	2		Brx599E	U		B	U		B7==R   r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   atanhr   s     r   arctanhr0    r!  r    c                    |,d t          t          | j                            D             }nGd t          t          | j                            D             }t          j        |          D ]}d||<   t          j        ||          }|S )Nc                     g | ]}d S )r*   r   )r   r]   s     r   r   z_keepdims.<locals>.<listcomp>  s    000q000r    c                 2    g | ]}t           j        |         S r   )r   r2   )r   r   s     r   r   z_keepdims.<locals>.<listcomp>  s    :::!:::r    r*   )r   r?   r2   r   flattenr   rw   )r5   ry   r)   r2   s       r   	_keepdimsr5    s    |00E#ag,,//000::eCLL&9&9:::L&& 	 	DE$KK

1eAHr    c                     | }|t          j        | dg          } t          j        t          j        | |          d          }|rt	          |||          }|S Nr&   rm   r"   r   )r   rw   r   argmaxr5  r5   r)   r   _xry   s        r   r8  r8    `    	
B|Jq2$
	!$'''w777A #b!T""Hr    c                     | }|t          j        | dg          } t          j        t          j        | |          d          }|rt	          |||          }|S r7  )r   rw   r   argminr5  r9  s        r   r=  r=    r;  r    r&   c                 *   t          |           } t          | j                  dk    rt          j        | d          } | j        }|j        dk    rt          j        dgd          S |t          j        | dg          } d}t          j        | |          S )Nr   uint8r   r"   r&   rm   )	r   r   r   r   r   r2   r3   rw   argsort)r5   r)   x_shapes      r   r@  r@    s    !A!!V++GAwgG|qwsG$$$|Jq2$:ad####r    c                 $    t          | |          S r   r   r   s     r   arrayrC  !  s    Qe,,,,r    c                 P    t                      Kt          j         j        t                    }t          j         |           t          j                   }nt                    t          j         j        j        t                    }t          j         |           t          j        |           fd} fd} |            }nMt          j        t          j	        t          j
                   t          j
                            ||          }|S )Nrm   c                  h    t          j                  } t          j        z            | z  S )Nrm   )r   r   )weights_sumr)   r'   r5   s    r   _rank_equal_casez!average.<locals>._rank_equal_case2  s5    -d;;;K=W4888;FFr    c                      t          j                  } t          j        gdgg          }t          j        |          | z  S Nr   )r   r   r   r   )rF  r   r)   r'   r5   s     r   _rank_not_equal_casez%average.<locals>._rank_not_equal_case6  sC    -00K'$!66D<7D11K??r    )r   r   r   r   r   r   r   r   condequalr3   )r5   r)   r'   r   avgrG  rJ  s   ```    r   averagerN  %  sE   !A"17E22GAunQT***#G,,"17GM5AAGAu''5))	G 	G 	G 	G 	G 	G 	G	@ 	@ 	@ 	@ 	@ 	@ 	@
 <""$$CC 'RWW%5%566 $ C
 Jr    c                 ,    t          j        | |          S r}   )r   broadcast_to)r5   r2   s     r   rP  rP  J  s    ?1e$$$r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   ceilr   s     r   rR  rR  N  r  r    c                     t          | j                  }|dk    rt          j        | d          } t          j        | ||          S Nr   r"   )r   r   r   r   clip_by_value)r5   x_minx_maxr   s       r   cliprX  Y  s@    ag&&EGAwAue,,,r    c                    t          j        d | D                       }|r@|t          |           k    r!t          j                            ||           S d | D             } t          j        t          |           } t          d | D                       }t          |          dk    r&t          j        | t          j        fd|           } t          j        | |          S )Nc              3   J   K   | ]}t          |t          j                  V  d S r}   )r   r   r0   r~   s     r   r   zconcatenate.<locals>.<genexpr>a  s.      KK1
1bo > >KKKKKKr    )r)   	sp_inputsc                 h    g | ]/}t          |t          j                  rt          |d           n|0S )Fr   )r   r   r0   r   r~   s     r   r   zconcatenate.<locals>.<listcomp>f  sQ         "!R_55%a6666	  r    c                     g | ]	}|j         
S r   r   r~   s     r   r   zconcatenate.<locals>.<listcomp>o  s    )))QW)))r    r*   c                 .    t          j        |           S r}   r   r   s    r   r   zconcatenate.<locals>.<lambda>r  s    "'!U*;*; r    rm   )builtinsr   r?   r   r   r   r   r   r   r   r   r   )xsr)   sparse_count	dtype_setr   s       @r   concatenaterc  `  s    <KKKKKKKL 3r77""9###<<<    B 
	-r	2	2B))b)))**I
9~~"I. ; ; ; ;R@@9Rd####r    c                 @    t           j                            |           S r}   r   r4   conjr   s    r   	conjugaterg  v      7<<??r    c                 @    t           j                            |           S r}   re  r   s    r   rf  rf  {  rh  r    c                 H    t          |           } t          j        |           S r}   )r   r   identityr   s    r   copyrl    s    !A;q>>r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   cosr   s     r   rn  rn    h    !A!!W,,"17E22
5A7;;q>>r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   coshr   s     r   rq  rq    r  r    c                 F    t           j                            | |d          S )Nr"   )r)   r   )r   r4   count_nonzeror5   r)   s     r   rs  rs    s    7  W ===r    c                 $   t          |           } t          |          }||}|}|t          | |d          } t          ||d          }t          j        | j        |j                  }t          j        | |          } t          j        ||          }d }t          j        |           d         }t          j        |          d         }	 || |          }  |||	          }t          j        |           }
t          j        |
t          j        |                    }
t          j	        | |
          } t          j	        ||
          }t
          j
                            | |          t          j        |dk    |	dk    z  fdfd          S )Nr&   c                 l     d t          j        t          j        |d           fd fd          S )Nc           
          t          j        | t          j        t          j        t          j        |           dz
  dgd          t          j        ddggd          gd                    S )Nr*   rp   r"   r   rm   )r   padr   r   r3   r   r   s    r   	pad_zerosz1cross.<locals>.maybe_pad_zeros.<locals>.pad_zeros  sl    6	"'!**q.!!4g>>aVHg66   	 	 	r    rp   c                                  S r}   r   )ry  r5   s   r   r   z0cross.<locals>.maybe_pad_zeros.<locals>.<lambda>  s    99Q<< r    c                       S r}   r   r   s   r   r   z0cross.<locals>.maybe_pad_zeros.<locals>.<lambda>  s     r    )r   rK  rL  )r5   size_of_last_dimry  s   ` @r   maybe_pad_zeroszcross.<locals>.maybe_pad_zeros  sP    
	 
	 
	 wH%q))+?+?+?+?+?
 
 	
r    rp   c                       d         S )N).rp   r   )rC   s   r   r   zcross.<locals>.<lambda>  s    &	 r    c                  &    t          d           S Nr&   )moveaxis)axiscrC   s   r   r   zcross.<locals>.<lambda>  s    B&& r    )r   r  r   r   r   r   r   r2   broadcast_dynamic_shaperP  linalgcrossrK  )r   r   axisaaxisbr  r)   r   r}  x1_dimx2_dimr2   rC   s       `      @r   r  r    s   	2		B	2		B	"eR	 	 B	"eR	 	 Brx22E	U		B	U		B
 
 
" Xb\\"FXb\\"F	V	$	$B	V	$	$B HRLLE&ubhrll;;E	U	#	#B	U	#	#B
	BA
	11%&&&&&	 	A
 Hr    c                     t          | |          } t          | j                  dk    rt          j        | d          } |t          j        | dg          } d}t          j                            | |          S Nr   r   r"   r&   r   rm   )r   r   r   r   r   rw   r4   cumprodr5   r)   r   s      r   r  r    so    !5)))A!!V++GAw|Jq2$7??14?(((r    c                     t          | |          } t          | j                  dk    rt          j        | d          } |t          j        | dg          } d}t          j                            | |          S r  )r   r   r   r   r   rw   r4   cumsumr  s      r   r  r    so    !5)))A!!V++GAw|Jq2$7>>!$>'''r    c                 Z    t                      t           j                  dk    rCt          j        t          j        t          j                   d           fd fd          S t           j                  dk    rt                     S t          d j                   )Nr*   r   c                      t          j        t          j                   t          j                   gj                  S r   )r   r   r_  r   r   kr5   s   r   r   zdiag.<locals>.<lambda>  s-    BHhl1oox|A?qwOOO r    c                  F    t           j                                       S )Nr  )r   r  diagr  s   r   r   zdiag.<locals>.<lambda>  s    BINN1N** r    rp   )offsetz(`x` must be 1d or 2d. Received: x.shape=)	r   r?   r2   r   rK  rL  r   diagonal
ValueError)r5   r  s   ``r   r  r    s    !A
17||qwHRWQZZ##OOOOO*****
 
 	

 
QW		!$$$$MAGMMNNNr    c           
           t                       j        }dk    r=||dz
  k    s|dk    r.||dz
  k    s|dk    rt          j                                       S t           ||fd           t          j                    fd}t          j        t          j        t          j	        dd         z            t          j
        d                             | fd          \   t          j                             	          S )
Nr   rp   r   r*   r&   r   r&   c                  v    t          j        t          j        d d         dggd           j                  S )Nr&   r   r   )r   r   r   r   )r5   rA  s   r   _zeroszdiagonal.<locals>._zeros  s5    x	73B3<!"5q99IIIIr    c                       fS r}   r   )r  r5   s   r   r   zdiagonal.<locals>.<lambda>  s    F r    r  )r   ndimr   r  	diag_partr  r2   rK  
logical_or
less_equalgreater_equal)r5   r  axis1axis2x_rankr  rA  s   ``    @r   r  r    s/   !AVF!fqj  ERKKfqj  ERKKy""1%%%UENH--AhqkkGJ J J J J J 
M&"wr{"233VWR[11	
 	
 	 IAv 9qF+++r    c                    t          |           } |dk    r| S |dk     rt          d|           | j        dk    rt          d|            t          || j                  }t	          d           g| j        z  }t	          d           g| j        z  }t	          dd           ||<   t	          d d          ||<   t          |          }t          |          }t          |          D ]]}t          | j                  dk    r"t          j
        | |         | |                   } <t          j        | |         | |                   } ^| S )Nr   z+Order `n` must be non-negative. Received n=zD`diff` requires input that is at least one dimensional. Received: a=r*   r&   r   )r   r  r  r	   slicetupler   r   r   r   	not_equalr   )r   nr)   slice1slice2slice1_tupleslice2_tupler]   s           r   diffr    sD   !AAvv	
QJqJJKKK	
1 
 
 	
 T16**DDkk]QV#FDkk]QV#FD>>F4Lr??F4L==L==L1XX > >QW%%//Q|_ao>>AAAlOQ|_==AAHr    c                    t          |           } t                    t          j        d           t	          | j                  }|dv rt          | d          } n+|dk    rt          | d          } n|dv rt          | d          } t          | t          j	                  r#t          j
                            fd|           S t          | t          j                  rt          j        t          j        | j                  t          j                            | j        	          t          j        | j                  
          }|                    | j                   |S t          j                            | 	          S )Nc                      t          |           S r}   )r   r   s    r   r   zdigitize.<locals>.<lambda>1  s    a r    )r   r   int16r?  uint16r"   uint32r#   )bfloat16float16r$   c                 F    t           j                            |           S )Ninput
boundaries)r   raw_ops	Bucketize)ry   binss    r   r   zdigitize.<locals>.<lambda>?  s    bj**t*DD r    r  r+   )r   r   r   r   r   r   r   r   r   RaggedTensorraggedmap_flat_valuesr0   rk  r,   r  r  r-   r.   r   r2   )r5   r  r   r7   s    `  r   digitizer  ,  sp   !A::D 00$77D "!'**I@@@G	h		G	-	-	-I!R_%% y((DDDDa
 
 	
 
Ar	'	' K	**:''ah4'HHAM22
 
 

 	!!!:aD999r    c                    t          |           } t          |          }t          j        | j        |j                  }t          j        |t                    }t          j        | |          } t          j        ||          }| j        }|j        }|j        dk    s|j        dk    r| |z  }nB|j        dk    rt          j	        | |dgdgg          }nt          j	        | |dgdgg          }t          j        ||          S )Nr   r*   r&   r   r   )
r   r   r   r   r   r   r   r2   r3   r   )r5   ry   r   r   rA  y_shaper7   s          r   dotr  L  s    !A!A%agqw77L&|U;;M
=!!A
=!!AgGgG|qGLA--Q			a2$666a2$66676<(((r    c                 X    |pt          j                    }t          j        | |          S r   r   r   s     r   emptyr  `  r   r    c                     t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | |          S r}   )r   r   r   r   r   r   rL  r   s      r   rL  rL  e  sf    	2		B	2		Brx22E	U		B	U		B8Br    c                     t          |           } t          | j                  }d|v s|dk    r&t          j        | t          j                              } t          j        |           S Nr   r   )r   r   r   r   r   r   r   expr5   r   s     r   r  r  n  sX    !A!!'**I	Y&00GAv}''6!99r    c                    t          |           } t          |          }t          | j                  t          |          z   t	          fd|D                       }t          | t          j                  rSddlm	}  || j        |          }|D ]"}t          j
                            | |          } #|                     |           | S |D ]}t          j        | |          } | S )Nc                 0    g | ]}t          |          S r   r   )r   r   out_ndims     r   r   zexpand_dims.<locals>.<listcomp>{  s$    @@@a$Q11@@@r    r   ) compute_expand_dims_output_shape)r   r
   r?   r2   sortedr   r   r0   r   r  r   rs   r   )r5   r)   r  r9   r   r  s        @r   rs   rs   w  s   !AD!!D17||c$ii'H@@@@4@@@AAD!R_%% 		
 	
 	
 	
 	
 	
 87FF 	, 	,A	%%a++AA	L!!! ! !N1a  Hr    c                     t          |           } t          | j                  }d|v s|dk    r&t          j        | t          j                              } t          j                            |           S r  )	r   r   r   r   r   r   r   r4   expm1r  s     r   r  r    s^    !A!!'**I	Y&00GAv}''7==r    c                     t          |           } |9t          j        | t          j        t          j        |                               S t          j        | |g          S r}   )r   r   reverser   r3   rt  s     r   flipr    sL    !A|z!RXbgajj11222:a$   r    c                    t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          j	        | |          } t          j
        |           S r  )r   r   r   r   r   r   r   r   r   r   floorr   s     r   r  r    sk    !A QW%%00 	// 

 	5A8A;;r    c                 v    |pt          j                    }t          ||          }t          j        ||           S r}   )r   r   r   r   rP  )r2   
fill_valuer   s      r   fullr    s3    $V]__E":u55J?:u---r    c                     t          |           } t          j        |p| j                  }t          ||          }t	          j        |t	          j        |                     S r}   )r   r   r   r   r   rP  r2   )r5   r  r   s      r   	full_liker    sO    !Au/00E":u55J?:rx{{333r    c                     t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | |          S r}   )r   r   r   r   r   r   greaterr   s      r   r  r    sf    	2		B	2		Brx22E	U		B	U		B:b"r    c                     t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | |          S r}   )r   r   r   r   r   r   r  r   s      r   r  r    sg    	2		B	2		Brx22E	U		B	U		BB###r    c                 <    t          d  D                       }t          |          dk    r&t          j        | t	          j        fd            t          j         d                   }t          j        t          j	        |d           fd fd          S )Nc           	      J    g | ] }t          |d t          |                    !S r   r   r   r~   s     r   r   zhstack.<locals>.<listcomp>  *    >>>aWQa11>>>r    r*   c                 $    t          |           S r}   r   r   s    r   r   zhstack.<locals>.<lambda>      *;Au*E*E r    r   c                  0    t          j         d          S )Nr   rm   r   r   r`  s   r   r   zhstack.<locals>.<lambda>      	"1%%% r    c                  0    t          j         d          S )Nr*   rm   r  r  s   r   r   zhstack.<locals>.<lambda>  r  r    )
r   r?   r   r   r   r   r   r3   rK  rL  )r`  rb  r3   r   s   `  @r   hstackr    s    >>2>>>??I
9~~"I. E E E ErJJ72a5>>D7
q%%%%%%%%  r    c                 &    t          | | |          S )N)NMr   )eye)r  r   s     r   rk  rk    s    au%%%%r    c                 @    t           j                            |           S r}   )r   r4   imagr   s    r   r  r    rh  r    c                 h   t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }d|v r3t	          j        | |z
            ddt	          j        |          z  z   k    S t	          j        | |          S )Nr   g:0yE>gh㈵>)r   r   r   r   r   r   r   rL  r   s      r   iscloser    s    	2		B	2		Brx22E	U		B	U		B% vb2g5526"::+=#=>>xBr    Tc                     t          |           } t          j        | j                  }|j        s|j        s$t          j        | j        t          j                  S t          j	        
                    |           S r}   )r   r   as_dtyper   
is_integer
is_numericr   r2   r   r4   	is_finiter5   dtype_as_dtypes     r   isfiniter    sa    !A[))N  )(A )wqw(((7Qr    c                     t          |           } t          j        | j                  }|j        s|j        s$t          j        | j        t          j                  S t          j	        
                    |           S r}   )r   r   r  r   r  r  r   r2   r   r4   is_infr  s     r   isinfr    _    !A[))N  *(A *x)))7>>!r    c                     t          |           } t          j        | j                  }|j        s|j        s$t          j        | j        t          j                  S t          j	        
                    |           S r}   )r   r   r  r   r  r  r   r2   r   r4   is_nanr  s     r   isnanr    r   r    c                     t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | |          S r}   )r   r   r   r   r   r   lessr   s      r   r  r    sd    	2		B	2		Brx22E	U		B	U		B72r??r    c                     t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | |          S r}   )r   r   r   r   r   r   r  r   s      r   r  r    sf    	2		B	2		Brx22E	U		B	U		B=R   r    2   c                 4   |Qt          | dt          |                     t          |dt          |                    t          g}t          j        | }nt          |          }t          | |          } t          ||          }|dk     rt          d|           t          j        t          j
                  }|r*t          j        | |||          }	|dk    r|| z
  |dz
  z  }n||dk    r|| z
  |z  }|dk    rPt          j        ||j                  |z
  }
t          j        | |
j                  } t          j        | |
||          }	nt          j        | |||          }	|-d|v rt          j        |	          }	t          j        |	|          }	|r|	|fS |	S )Nr   r   r   z4`num` must be a non-negative integer. Received: num=rm   r*   r   )r   r   r   r   r   r   r   r  r   npnanlinspacer   r   r  )r  r  numendpointretstepr   r)   r6   r  rz   new_stops              r   r  r    s    }E7DKK00D'4::..

 "$56!%((e5111ET///D
QwwH3HH
 
 	
 ''D >UD#D999775LS1W-D 775LC'D77wtTZ0047HGE8>22E[#DAAAFF[c===FE>>Xf%%F'' ~r    c                    t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   logr   s     r   r  r  @  so    !A QW%%00 	// 

 	5A7;;q>>r    c                    t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          j	        | |          } t          j
                            |           t          j
                            t          j        d| j                            z  S )Nr#   
   r   r   r   r   r   r   r   r   r   r   r4   r  r   r   s     r   log10r  L  s    !A QW%%00 	// 

 	5A7;;q>>BGKKB(@(@AAAAr    c                    t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   log1pr   s     r   r  r  X  sq    !A QW%%00 	// 

 	5A7==r    c                    t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          j	        | |          } t          j
                            |           t          j
                            t          j        d| j                            z  S )Nr#   rp   r  r   s     r   log2r  d  s    !A QW%%00 	// 

 	5A7;;q>>BGKKAqw(?(?@@@@r    c                    t          |           } t          |          }t          j        | j        |j        t                    }t          j        | |          } t          j        ||          }| |z
  }t          j        t
          j        	                    |          | |z   t          j
        | |          t
          j                            t
          j                            t          j        |                               z             S r}   )r   r   r   r   r   r   r   wherer4   r  r   r  r  r   )r   r   r   r  s       r   	logaddexpr  p  s    	2		B	2		Brx599E	U		B	U		BGE8
u
R

2rRW]]27;;u~+F+FGGG  r    c                     t          j        | d          } t          j        |d          }t          j        | |          S Nr   )r   r   logical_andr   r   s     r   r  r  ~  s6    	V		B	V		B>"b!!!r    c                 T    t          j        | d          } t          j        |           S r  )r   r   logical_notr   s    r   r"  r"    s#    
6A>!r    c                     t          j        | d          } t          j        |d          }t          j        | |          S r  )r   r   r  r   s     r   r  r    s6    	V		B	V		B=R   r    r  c                     t          | |||||          }t          j        t          j        ||j                  |          S )N)r  r  r  r  r   r)   )r  r   powr   r   )r  r  r  r  baser   r)   rz   s           r   logspacer'    sJ      F 6"'$--v666r    )densify_mixedc           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S r   )
r   r   r   r   r   r   r   r   r   r   r   s      r   r   r         b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E 
2u	%	%B	2u	%	%B:b"r    c                 (    t          | d||          S )Nr  r   )quantiler  s      r   medianr-    s    As9999r    xyindexingc                 $    t          j        |d| iS )Nr0  )r   meshgrid)r0  r5   s     r   r2  r2    s    ;-H---r    c                    t          |           } |t          | j                  dk    rrt          j        | ||          } t          j                            t          j        | d          t          j        |d                    } t          j        | d          S t          j        | ||          } t          j                            | |          S t          j	                    r?t          |           }t          j        |t          j        d|j                  d           t          | j                  dk    rt          j        | ||          S t          j        | ||          S )Nr   r   r"   r   r   z*Cannot compute the min of an empty tensor.r   )r   r   r   r   r  r4   minimumr   
reduce_minr   r   r   r   r   s        r   r  r    sD   !A QW%%//adX>>>A7 3 3RWWg5N5NOOA71f%%%adX>>>Awq'*** 
 
a
K...@	
 	
 	
 	
 !!V++}QTH====}QTH====r    c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S r   )
r   r   r   r   r   r   r   r   r   r4  r   s      r   r4  r4    r*  r    c                     t          |           } t          |          }t          j        | j        |j                  }|dk    rd}t	          j        | |          } t	          j        ||          }t          j                            | |          S rT  )r   r   r   r   r   r   r4   modr   s      r   r8  r8    sx    	2		B	2		Brx22E	U		B	U		B7;;r2r    c                 "    t                      t          |          t          |          }t           fdD                       t           fd|D                       }t                    t          |          k    rt	          d| d|           |k    r S fdt           j                  D             }t          t          |                    D ]\  }}|	                    ||           t          j         |          S )Nc              3   B   K   | ]}t          |j                  V  d S r}   r	   r  r   r   r5   s     r   r   zmoveaxis.<locals>.<genexpr>  s0      BBQ%a00BBBBBBr    c              3   B   K   | ]}t          |j                  V  d S r}   r;  r<  s     r   r   zmoveaxis.<locals>.<genexpr>  s0      LL!*1af55LLLLLLr    zDInconsistent number of `source` and `destination`. Received: source=z, destination=c                     g | ]}|v|	S r   r   )r   r   _sources     r   r   zmoveaxis.<locals>.<listcomp>  s#    999!(8(8A(8(8(8r    )r   r
   r  r?   r  r   r  r  zipinsertr   rv   )r5   sourcedestination_destinationpermdestsrcr?  s   `      @r   r  r    s?   !Av&&G#K00LBBBB'BBBBBGLLLL|LLLLLL
7||s<((((D &D D6AD D
 
 	

 ,9999uQV}}999DCg6677  	cD#<4   r            c                 ^   t          |           } | j        }t          j        |          }|j        s|j        s| S t          j        t          j                            |           t          j	        ||          |           } ||j
        }t          j        t          j                            |           | dk    z  t          j	        ||          |           } ||j        }t          j        t          j                            |           | dk     z  t          j	        ||          |           } | S rI  )r   r   r   r  r  r  r  r4   r  r   r   r  r  )r5   r
  posinfneginfr   r  s         r   
nan_to_numrL    s    !AGE[''N  (A  	""BKU$;$;Q??A ~
""a!e,bk&%.H.H!LLA ~
""a!e,bk&%.H.H!LLAHr    c                 .    t          |           } | j        S r}   )r   r  r   s    r   r  r    s    !A6Mr    c                     t          |           } t          j        t          j        t          j        | d                    | j        j        d          }t          j        d |          S )Nr   r*   rm   c                 ,    t          j        | d          S )Nr"   r   )r,   s    r   r   znonzero.<locals>.<lambda>  s    bggw.G.G r    )	r   r   unstackr  r   r2   r3   r   r   )r5   rz   s     r   nonzerorQ    sV    !AZF!3!344aglKKKFGGPPPr    c                     t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | |          S r}   )r   r   r   r   r   r   r  r   s      r   r  r  "  sf    	2		B	2		Brx22E	U		B	U		B<Br    c                 .    t          j        | |          S r   )r   	ones_liker   s     r   rT  rT  +  s    <''''r    c                 .    t          j        | |          S r   )r   
zeros_liker   s     r   rV  rV  /  s    =%((((r    c                 ,   t          |           } t          |          }t          j        | j        |j                  }t	          j        | |          } t	          j        ||          }t	          j        | ddg          t	          j        |dg          z  S )Nr&   r*   )r   r   r   r   r   r   rw   r   s      r   outerrX  3  s}    	2		B	2		Brx22E	U		B	U		B:b2q'""RZRD%9%999r    r   c                     t          |           } i }||dk    rt          d|           ||d<   t          |d          }t          j        | ||                                fi |S )Nr   zZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=constant_valuesr"   )r   r  r   rx  upper)r5   	pad_widthmoderZ  r   s        r   rx  rx  <  s    !AF":)"&) )  
 %4 !!)W55I6!Y

77777r    c                     t          |           } |Dt          j        | j                  }|dk    rd}n|dv rd}n|dv rd}t	          j        | |          } t	          j        | ||          S )Nr   r"   )r   r  r?  r  r  r   )r   r   r   r   r   r   r   r5   r)   r   r   s       r   r   r   K  s    !A}"17++F??EE'''EE)))EGAu>!$::::r    linearc                 
   t          j        d          |t          j        | dg          nKt          | j                  fd|D             }t          t          t                                                  |                    }|t          |          z   }t          j
        | |          }d | j        vrIt          | j                  fd|D             }t          j        fd|D                       g}	||	z   }
n]t          j        t          j        |           t          j        |t           j                            }t          j        |dggd          }
t          j        ||
	          t          j        dd
          }t          j        t          j                  d         d          fd}|dv r"t          j        | ||          d          }n#|dk    rEdt          j        | |d          d          t          j        | |d          d          z   z  }n|dk    r |d          }dz
  z  }t          j        |dz
  d          }t          j        |dz   t          j                  d         dz
            }t          j        |t           j                  |z
  }t          j        |j                  }t          j        ||d          d|z
  z  t          j        ||d          |z  z   }| j        t           j        t           j        t           j        t           j        fv rt          j        t           j                            |           |          }t          j        t          j        |          dt          j                  ggd          }t          j        ||	          }t          j        |t;          d          |          }|r|]t          j        t          j        |           t          j                  z   gd          }|t          j        ||j                  z  }n(t          |          D ]}t          j        ||          }t          j         t          j                            }t          j!        |j                  j        }|dk     r|S tE          t          j#        d|          tI          j%        |          |z  z            }|dk    r|S tM          j'        t          |                    }|(                    |           t          j
        ||          S )Nr%   r&   c                 0    g | ]}t          |          S r   r   )r   r   x_ndimss     r   r   z_quantile.<locals>.<listcomp>e  s$    <<<!!!W--<<<r    )r   rE  c                      g | ]
}|         S r   r   r   r   rA  s     r   r   z_quantile.<locals>.<listcomp>m  s    :::!71::::r    c                      g | ]
}|         S r   r   rf  s     r   r   z_quantile.<locals>.<listcomp>n  s    #=#=#=1GAJ#=#=#=r    r   rm   r[   	ASCENDING)r)   	directionc                 |   | dk    r&t           j                            dz
  z            }nL| dk    r&t           j                            dz
  z            }n | dk    rt          j        dz
  z            }t          j        t          j        |d          dt          j                  d         dz
            S )z1Get values of y at the indices implied by method.lowerr*   highernearestr"   r   r&   )r   r4   r  rR  roundrU  r   r2   )methodr,   rd   qry   s     r   _get_indicesz_quantile.<locals>._get_indices{  s    WgmmQUaK00GGxgllAEQ;//GGy  hA{++G GGW%%q"(1++b/A*=
 
 	
r    )rm  rk  rl  midpointr  rk  rl  ra  r*   )paddingsrZ  NaNr"   r   r   rp   ))r   r   rw   r?   r2   r  r   r   
differencer   rv   r4   r   r   r#   r   r   r   r4  r%   r   r  r  r$   r   r  rx  r3   r  r   r   rs   get_static_valueTensorShaper   copysignr_  r   collectionsdequerotate)r5   rp  r)   ro  r   
other_dimsrE  x_permedother_shape	end_shape
full_shapesorted_yrq  
gathered_ylarger_y_idx	exact_idxsmaller_y_idxfractionnan_batch_membersright_rank_matched_shapeones_vecr   shift_value_staticndimsrd   rd  rA  ry   s    `                      @@@@r   	_quantiler  Y  s!    	9A |Jq2$ag,,<<<<t<<< Cg//::4@@AA
DJJ&<!$///qw17mmG::::z:::K#=#=#=#=#=#=#=>>?I$y0JJ)BHQKKRX1N1NOOKK"#6Q???JJxz222 wqr[999H
B++A
 
 
 
 
 
 
 ///Yxf)=)=BGGG

	:		IhW 5 5B???i,,x"8"8rBBBC


 
8		#|H--UaK	
<!#3Q77z-!"3RXa[[_q5HII7<44y@78QW--Ih2666!h,Gi-b999HDE 	 	w2;
BJ
CCCM"'..*;*;$GGG#%6H&''"'!**o&$
 $
 $
 
 J%=
 
 
 X/uzJJ
  @<wbgajj271::&=%>gNNNH"'(*2BCCCCJJD\\ @ @^JQ???

 ,RWQZZ88N:+,,1Eqyya+,,<*++e3	5  QU5\\**DKK"###<*40000r    c                     t          |           } t          |          }t          |          }t          j        | j        t
                    }t          j        | |          } t          | ||||          S )N)r)   ro  r   )	r   r
   r   r   r   r   r   r   r  )r5   rp  r)   ro  r   r   s         r   r,  r,    sg    !A!AD!!D&qw66M
=!!AQVhGGGGr    c                 L    t          |           } t          j        | dg          S r  )r   r   rw   r   s    r   ravelr    s#    !A:a"r    c                 ^    t          |           } t          j                            |           S r}   )r   r   r4   realr   s    r   r  r    s!    !A7<<??r    c                 ^    t          |           } t          j                            |           S r}   )r   r   r4   
reciprocalr   s    r   r  r    s%    !A7a   r    c                     t          |           } t          | j                  dk    r?t          j        | d          } t          j        t          j        | ||          d          S t          j        | ||          S )Nr  r  rm   )r   r   r   r   r   repeat)r5   repeatsr)   s      r   r  r    so    !A!!X--GAx  wryG$777BBB9Qd++++r    c                    t          |           } t          | t          j                  rOddlm}  || j        |d          }t          j                            | |          }|	                    |           |S t          j        | |          S )Nr   )compute_reshape_output_shapenewshape)
r   r   r   r0   r   r  r2   r   rw   r   )r5   r  r  r9   r7   s        r   rw   rw     s    !A!R_%% NNNNNN33GXz
 
 ""1h//&&&:a"""r    c                     t          |           } |t          j        | ||          S t          j        |           }t          j        t          j        | dg          |d          } t          j        | |          S )N)shiftr)   r&   r   )r   r   rollr2   rw   )r5   r  r)   original_shapes       r   r  r    sn    !AwqD1111 Xa[[N

1rd##UA..A:a(((r    c                     t          |           } t          | j                  }|dv r<t          j        | d          } t          j        t          j        |           |          S t          j        |           S )N)r?  r  r  r"   )r   r   r   r   r   signr  s     r   r  r     sc    !A!!'**I111GAwwrwqzz9---71::r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   sinr   s     r   r  r    ro  r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   sinhr   s     r   r  r    r  r    c                 H    t          |           } t          j        |           S r}   )r   r   r   r   s    r   r   r   !  s    !A71::r    c                     t          |           } t          | j                  }|dk    r>t          j        | d          } t          j        t          j        | |          |          S t          j        | |          S )Nr   r   rm   )r   r   r   r   r   r   )r5   r)   r   s      r   r   r   &  sp    !A!!'**IFGAvwrwqt,,,i888714    r    c                    t          |t                    sZ| j        |         }t          |          }|dd         }||dd          z
  }t	          j        |t          |          |gd          }n|}t	          j        | ||          S )Nr   r*   r&   rm   )r   r   r2   r   r   r   r  split)r5   indices_or_sectionsr)   
total_size
start_sizeend_sizenum_or_size_splitss          r   r  r  0  s    )3// 1 WT]
/0CDD(1-
 3BCC 88Y122H=A
 
 
 18A)5555r    c                     t          d | D                       }t          |          dk    r&t          j        | t	          j        fd|           } t          j        | |          S )Nc           	      J    g | ] }t          |d t          |                    !S r   r  )r   r   s     r   r   zstack.<locals>.<listcomp>A  s*    ===aWQa11===r    r*   c                 $    t          |           S r}   r   )r   r   s    r   r   zstack.<locals>.<lambda>D  s    ):1e)D)D r    rm   )r   r?   r   r   r   r   r   stack)r5   r)   rb  r   s      @r   r  r  @  sn    ==1===>>I
9~~"I.DDDDaHH8AD!!!!r    c                     t          |           } t          | j                  }d|v s|dk    r&t          j        | t          j                              } t          j                            | ||          S )Nr   r   r   )	r   r   r   r   r   r   r   r4   
reduce_std)r5   r)   r   r   s       r   stdr  H  sg    !A!!'**I	Y&00GAv}''7adX>>>r    c                    t          |           } | j        j        t          |t                    rst          |t                    r^t          || j                  }t          || j                  }||k    r| S t          t          | j                            }|||<   |||<   nt          j        |           }t          j
        |dk     t          j        ||          |          }t          j
        |dk     t          j        ||          |          }t          j        |          }t          j        ||g|gg||g          }t          j        | |          S rI  )r   r2   r3   r   r   r	   r  r   r   r   r  r   tensor_scatter_nd_updaterv   )r5   r  r  rE  r  s        r   swapaxesr  P  s8   !A 	
 uc"" 	!uc"" 	! "%00!%00 E>>HE!&MM""UUBF5&$9$95AABF5&$9$95AAx*E7UG$uen
 
 <4   r    c           	      &   t          |t          j                  r[| j        t          j        t          j        t          j        t          j        fvr>t          j	        d| j         d           t          | t          |d          |          S |t          j        | d          } n?|dk    r9t          j	        d| d           t          | t          |d          |          S t          j                            t          j        |           t          j                            |d	          d
          }|                    |j        |j        t'          |j                  d          z              |S t          |           } t          |          }|t          j        | d	g          } d}t          j        |dk     |t          j        t          j        |           |         |j                  z   |          }t          j        | ||          S )Nz=`take` with the TensorFlow backend does not support `x.dtype=z:` when `indices` is a sparse tensor; densifying `indices`.Fr   rm   r&   r   z:`take` with the TensorFlow backend does not support `axis=r&   )embedding_weights
sparse_ids
default_id)r   r   r0   r   r  r$   r%   r  warningswarntaker   rw   r   safe_embedding_lookup_sparser   rs   r   r2   r?   r  r   r   )r5   r,   r)   r7   s       r   r  r  o  s   '2?++ 72:rz2:r{KKKM(G( ( (  
 ,WUCCC$OOOO<
1e$$AAQYYM(( ( (  
 ,WUCCC$OOOO33 2155y,,W2,>> 4 
 

 	c'-6H6H6J6J)KKLLL!A((G|Jq2$h!"'"(1++d+W];;; G
 9Qd++++r    c                    t          |           } t          |d          }|G|j        dk    rt          d|j                   t	          t          j        | dg          |d          S t          j        |           }|}|dk     r||z   n|}t          j        | |j                  }t          j        ||j                  }t          j	        ||ggdg          }t          j	        ||ggdg          }t          j
        ||          }	t          j	        |	|gg||         g          }t          j	        |	|gg||         g          }t          j        | |          } t          j        ||          }|j        }
t          j        |dk     |||         z   |          }t          | |d          } t          ||d          }t          j        |           }t          j        | d|d         g          } t          j        |          }t          j        |d|d         g          }t          j        | |d          }t          j        ||          }t          ||d          }|                    |
           |S )Nr#   r*   z;`indices` must be 1D if axis=None. Received: indices.shape=r&   r   )out_type)
batch_dims)r   r  r  r2   take_along_axisr   rw   r3   r   r  r  rP  r  r  r   r   )r5   r,   r)   r3   static_axisx_shape_originalindices_shape_originalrA  indices_shapebroadcasted_shapepossible_result_shaperz   s               r   r  r    s   !A11G|<1;+2=; ;   rz!bT22GQ???71::DK((4$;;D xGM:::XgFFF)*:dVHqcJJG/$1# M 27MJJ)TF8&6t&<%= G /TF8&<T&B%C M 	7##Aog}55G $M hw{Ggk.B$BGLLGK$$AwR00GhqkkG

1r72;'((AHW%%Mj2}R'8"9::GYq'a000FZ..Ffk2..F
*+++Mr    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   tanr   s     r   r  r    ro  r    c                    t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   tanhr   s     r   r  r    r  r    rp   c                 Z   t          |           } t          |          }t          j        | j        |j                  }t          j        |t                    }t          j        | |          } t          j        ||          }t          j        t          j        | ||          |          S )Nr   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   s        r   r   r     s    	2		B	2		B%bh99L&|U;;M	]	#	#B	]	#	#B72<BT222,GGGGr    c                 F   |dk    rt          j        |           S | j        }t          j        |          j        rh|dk    r| S t          j        t          j        d|          t          j	                              }t          j        | t          j	                              } n-t          j        t          j        d|          | j                  }t          j
        | |          } t          j        |           } t          j        | |          } t          j        | |          S )Nr   r  )r   rn  r   r  r  r   r4   r%  r   r   r   divide)r5   decimalsx_dtypefactors       r   rn  rn    s    1}}x{{gG	{7& 	:a<<H"h//AAGAv}'' "h//99
AvA
A
	!VA71gr    c                    t          |           } t          j        t          |d          dg          }t          j        |          }t          j        |t          j        | j        j        |z
  d          dggd          }t          j        t          j        |           t          j        || j        j        z
  d          dggd          }t          j        | |          } t          j        | |          S )Nr"   r   r&   r   r*   )rZ  )	r   r   rw   r   rx  r   r2   r3   tile)r5   r  repeats_sizerA  s       r   r  r    s    !Aj*7'BBBRDIIG77##Lf
*QW\L0!
4
4a	89  G
 f

*\AGL0!
4
4a	89  G
 	
1gA71gr    c                    t          |           } t          | j                  }|dvrt          j        |d          }t          j        |           }t          | ||fd          } t          j        t          ||         ||         |d          | t          j
        |                     } t          | j                  dk    rt          j        | d          } t          j        t          j        | d          |          S )N)r#   r  uint64r"   r  r   )r  r   rm   )r   r   r   r   r   r   r2   r  r  r  rV  r   r   )r5   r  r  r  r   rA  s         r   tracer    s    !Aag&&E111"5'22hqkkGUENH--A
GENGENfFCCC	
a	 	A !!V++GAw72=222E:::r    c           	         ||n| }t          |pt          j                              }|dk     r| dz
  }|| k    rt          j        | |g|          }nt          j        | |gd          }t          j        t          j        t          j        	                    ||d                    |          }nBt          j        | |g|          }||k    r|}n!t          j        	                    |d|          }|S )Nr   r*   r   r   r&   )
r   r   r   r   r   r   r   r"  r  	band_part)r  r  r  r   rk  ros          r   trir  '  s    ]Ae6v}77E1uuQ199!Qu---AAAf---Ary221eR@@AA  AA GQF%(((q55AA	##Ar1--AHr    c                    t          |           } |dk    r!t          j                            | d|          S t          j        |           }|d         |d         }}t          j        t          j        |          t          j        |          d          \  }}|||z
  k    }t          j        t          j        ||          | t          j	        |                     S Nr   r&   r   ijr/  
r   r   r  r  r2   r2  r   r  rP  rV  r5   r  r2   rowscolsr   jmasks           r   trilr  <  s    !AAvvy""1b!,,,HQKKErE"I$D;rx~~rx~~EEEDAqA:D8BOD%00!R]15E5EFFFr    c                    t          |           } |dk    r"t          j                            | | d          S t          j        |           }|d         |d         }}t          j        t          j        |          t          j        |          d          \  }}|||z
  k    }t          j        t          j        ||          | t          j	        |                     S r  r  r  s           r   triur  L  s    !AAvvy""1qb"---HQKKErE"I$D;rx~~rx~~EEEDAqA:D8BOD%00!R]15E5EFFFr    c                    t          |           } t          |          }t          j        | j        |j                  }t          j        |t                    }t          j        | |          } t          j        ||          }t          j        | dg          } t          j        |dg          }t          j        t          | |          |          S r  )	r   r   r   r   r   r   r   rw   r  )r   r   r   r   s       r   vdotr  \  s    	2		B	2		B%bh99L&|U;;M	]	#	#B	]	#	#B	B		B	B		B73r2;;---r    c                     t          d | D                       }t          |          dk    r&t          j        | t	          j        fd|           } t          j        | d          S )Nc           	      J    g | ] }t          |d t          |                    !S r   r  r~   s     r   r   zvstack.<locals>.<listcomp>i  r  r    r*   c                 $    t          |           S r}   r   r   s    r   r   zvstack.<locals>.<lambda>l  r  r    r   rm   )r   r?   r   r   r   r   r   r   )r`  rb  r   s     @r   vstackr  h  sn    >>2>>>??I
9~~"I. E E E ErJJ9Ra    r    c                 p     |dk    rt          d          t          j                    fd            }|S )Nr   z=Not supported with `vectorize()` with the TensorFlow backend.c                 .    t          j        |           S r}   )r   vectorized_map)r5   fns    r   wrappedz_vmap_fn.<locals>.wrappedv  s     Q'''r    )r  	functoolswraps)r  in_axesr  s   `  r   _vmap_fnr  p  sX    !||K
 
 	
 _R( ( ( ( ( Nr    excluded	signaturec                2    t          | t          ||          S )Nr  )r   r  )pyfuncr  r  s      r   	vectorizer  }  s"    8y   r    c           
      *   t          j        | d          } ||t          |t          t          f          st          |          }t          |t          t          f          st          |          }t          j        t          |dt          |                    t          |dt          |                              }t          ||          }t          ||          }t          j
        | ||          S ||t          |           S t          d          )Nr   r   zN`x1` and `x2` either both should be `None` or both should have non-None value.)r   r   r   r   r   r   r   r   r   r   r  rQ  r  )	conditionr   r   r   s       r   r  r    s    	6**I	~"."sEl++ 	'"2&&B"sEl++ 	'"2&&B"Bb**Bb**
 
 r5))r5))x	2r***	zbjy!!!
	/  r    c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                    t                    }t          | |          } t          ||          }t          j	        | |          S r   )
r   r   r   r   r   r   r   r   r   r  r   s      r   r  r    s    b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E
 
2u	%	%B	2u	%	%B9Rr    c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                    t                    }t          | |          } t          ||          }t          j	        
                    | |          S r   )r   r   r   r   r   r   r   r   r   r4   divide_no_nanr   s      r   r  r    s    b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E
 
2u	%	%B	2u	%	%B7  R(((r    c                 "    t          | |          S r}   )r  r   s     r   true_divider    s    "b>>r    c           
      J   t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }d|v rHt          | d          } t          |d          }t          j	        t          j
        | |          |          S t          | |          } t          ||          }t          j
        | |          S )Nr   r   r"   )r   r   r   r   r   r   r   r   r   r   r%  r   s      r   powerr    s    b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E
 r7++r7++wrvb"~~u---	2u	%	%B	2u	%	%B6"b>>r    c                 *    t          j        |           S r}   )r   negativer   s    r   r
  r
    s    ;q>>r    c                     t          |           } t          | j                  dk    rt          j        | d          } t          j        |           S rT  )r   r   r   r   r   squarer   s    r   r  r    sC    !A!!V++GAw9Q<<r    c                    t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          j	        | |          } t          j
                            |           S r  )r   r   r   r   r   r   r   r   r   r   r4   sqrtr   s     r   r  r    so    !A QW%%00 	// 

 	5A7<<??r    c                   	 t          |           } t          |          }| j                                        	|?|D ]!}	|         dk    rt	          d| d          "t          	fd|D                       }t          | t          j                  rt          j        |           }g }g }t          	          D ]F\  }}||dk    s9n||v s4|
                    ||n||                    |
                    |           Gt          j        | j        |d          }t          j        || j        t          |                    S t          j        | |          S )Nr*   zCannot squeeze axis=z!, because the dimension is not 1.c                 J    g | ]}t          |t                               S r   )r	   r?   )r   r   static_shapes     r   r   zsqueeze.<locals>.<listcomp>  s,    MMM1(C,=,=>>MMMr    rm   )r   r
   r2   as_listr  r  r   r   r0   	enumerater/   r   r,   r-   r  ru   )
r5   r)   r   dynamic_shape	new_shaper   r   dimnew_indicesr  s
            @r   ru   ru     s   !AD!!D7??$$L 	 	AA!## *1 * * *   $
 MMMMMMMNN!R_%% 	H	-- 	) 	)FAs $C1HHH!t))  ]1=MNNN%%a(((i	>BBB{AHeI6F6FGGG:ad####r    c                     t          | t          j                  rMddlm} t          j                            | |          }|                     || j        |                     |S t          j        | |          S )Nr   )compute_transpose_output_shape)rE  )	r   r   r0   r   r  r   rv   r   r2   )r5   r   r  r7   s       r   rv   rv   	  s    !R_%% PPPPPP$$QT$2277FFGGG<%%%%r    c                 &   t          |           } t          j        | j        d          }t          j        | j        t                    }t          j        | |          } t          j        t
          j                            | ||          |          S )Nr$   r   )	r   r   r   r   r   r   r   r4   reduce_variance)r5   r)   r   r   r   s        r   varr  	  sy    !A&qw	::M%agu55L
=!!A7
x@@  r    c                 *   t          |           } t          | j                  }|dv rd}n|dv rd}t          | |          } t	          | t
          j                  r#t
          j                            | ||d          S t          j        | ||          S )N)r   r   r  r"   r_  r  T)r)   r   output_is_sparser   )	r   r   r   r   r   r   r0   r   r   r`  s       r   r   r   	  s    !Aag&&E)))	%	%	%QA!R_%% 
y##D8d $ 
 
 	
 =9999r    c                 (   |pt          j                    }|s| }t          |           t          |          t          |          }}} ||k    s| | k    rt          | |g|          S |dk    rt	          j        | ||          S t          j        | |          }|dk    r| |k    r||z  }n/| |z   |k    r||z
  }n |dk    r|| k    r||z  }n||z
  | k    r| |z   }t	          j        |g|          }t          j	        
                    || ||          S )Nr   r   )r  num_rowsnum_colsr  )r   r   r   r   r   r  r_  r  r   r  r  )r  r  r  r   diag_len	diagonal_s         r   r  r  &	  s2   $V]__E !ffc!ffc!ff!qAAvv!qaV5))))Avvva%((((|Aq!!H1uu66MHHUQYY1uH	
a66MHHUQYY1uH
%000I9>>9q1>JJJr    c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        
                    | |          S r   )r   r   r   r   r   r   r   r   r   r4   floordivr   s      r   floor_divider&  A	  s    b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E 
2u	%	%B	2u	%	%B7B###r    c                     t          j        | d          } t          j        |d          }t           j                            | |          S r  )r   r   r4   logical_xorr   s     r   r(  r(  O	  s<    	V		B	V		B7r2&&&r    validc           
      r   t          |           } t          |          }t          j        t          | dt	          |                     t          |dt	          |                              }|t
          j        k    rt
          j        }n1|t
          j        t
          j	        t
          j        fvrt
          j
        }t          j        | |          } t          j        ||          }t          | j        d                   t          |j        d                   }}|dk    r#||z   dz
  }||z
  dz  }||z
  dz  }t          j        | t
          j                            |          t
          j                            |          gg          } t          j        |t
          j                            |          t
          j                            |          gg          }t          j        | d|df          } t          j        ||ddf          }t          j        t
          j                            | |dd                    S t          j        | d|df          } t          j        ||ddf          }t          j        t
          j                            | |d|                                                    S )	Nr   r   r  r*   rp   )rs  SAME)stridepadding)r   r   r   r   r   r   r#   r%   r  r  r$   r   r   r2   rx  r4   r  rR  rw   ru   r   conv1dr[  )	r   r   r]  r   x1_lenx2_lenfull_lenx1_padx2_pads	            r   	correlater4  U	  s?   	2		B	2		BGT"XX&&GT"XX&& E 
	r{BJ
;	;	;
	U		B	U		B!%%s28A;'7'7FFv~~F?Q&V#q(V#q(V27==00"',,v2F2FGH
 
 
 V27==00"',,v2F2FGH
 
 
 ZQ!,--ZXq!,--z"%,,r2a,HHIII	BFA	'	'B	BA	'	'B:bell2r!TZZ\\lJJKKKr    c                 P    t           j        j                            | ||          S )N)default)r   experimentalnumpyselect)condlist
choicelistr6  s      r   r9  r9  	  s"    ? ''*g'NNNr    c                 x    t          |           } t          t          j                            |                     S r}   )r   r  r   r  slogdetr   s    r   r=  r=  	  s-    !A""1%%&&&r    )Nr   F)NF)NFNr}   )Nr*   Nr  )NN)r   )r&   r&   r&   N)r   r   r*   )r*   r&   )r  TFNr   )r  Tr  Nr   )rH  NN)r   N)Nra  F)rp   )Nr   N)r)  )r_  ry  r  r4   r=   r  r8  r	  
tensorflowr   #tensorflow.python.ops.linalg.sparser   	keras.srcr   keras.src.backendr   r   keras.src.backend.commonr   &keras.src.backend.common.backend_utilsr	   r
   r   keras.src.backend.tensorflowr   !keras.src.backend.tensorflow.corer   r   elementwise_binary_unionr   r1   	lru_cacherD   r   sparse_subtractr   rt   elementwise_binary_intersectionr   r   r   r   r   elementwise_unaryr   r   r  r  r	  r  r/   r  densifying_unarypir  r
  r   r$  r'  r*  r-  r0  r5  r8  r=  r@  rC  rN  rP  rR  rX  rc  rg  rf  rl  rn  rq  rs  r  r  r  r  r  r  r  r  r  rL  r  rs   r  r  r  r  r  r  r  r  rk  r  r  r  r  r  r  r  r  infr  r  r  r  r  r  r"  r  r'  r   r-  r2  r  r4  r8  r  rL  r  rQ  r  rT  rV  rX  rx  r   r  r,  r  r  r  r  rw   r  r  r  r  r   r   r  r  r  r  r  r  r  r  r   rn  r  r  r  r  r  r  r  r  r  r  elementwise_divisionr  r  r  r  r
  r  r  ru   rv   r  r   r  r&  r(  r4  r9  r=  r   r    r   <module>rO     s                       E E E E E E       $ $ $ $ $ $ / / / / / / + + + + + + D D D D D D C C C C C C A A A A A A / / / / / / 2 2 2 2 2 2 ? ? ? ? ? ? ! //  0// / / /d S! ! !a) a) a)H ! !788  98G- G- G-T '  ('J) J) J) J)Z> > > ><' ' ' '
( ( ( (
     : : : :
: : : :
0 0 0 00 0 0 0	. 	. 	. 	.   & ru%%  &%     !          ! ! !           $ $ $ $- - - -" " " "J% % %   - - -$ $ $ $,         
      > > > >0 0 0 0f) ) ) )( ( ( (O O O O, , , ,6   4: : :@) ) )(( ( ( (
       (   ! ! ! !   . . . .4 4 4 4  $ $ $
 
 
& & & &                    ! ! ! IJ( ( ( (V "&!!  "! "&!!B B "!B    "&!!A A "!A  " " "  
! ! !	7 	7 	7 	7 ! !2$GGG  HG: : : :  . . . . .> > > >< ! !2$GGG  HG  ! ! !*   0  
Q Q Q     ( ( ( () ) ) ): : :8 8 8 8; ; ; ;h1 h1 h1 h1VH H H H  
   
   ! ! ! !
, , , ,# # #) ) ) )           
! ! ! !6 6 6 6 " " " "? ? ? ?! ! !>%, %, %, %,P2 2 2 2j      H H H H    (  $; ; ; ;&   *G G G G G G G G 	. 	. 	.! ! !
 
 
 
 #'$       ,   ) ) )    &         $ $ $ $2& & & &   : : : : K K K K6$ $ $' ' ''L 'L 'L 'LTO O O O' ' ' ' 'r    