
    2Vh                    $   d Z ddlZddlZddlmZ ddlmZ ddlm	Z
 eZeZ ed      d        Z ed      d d	       Z ed
      d d       Z ed      dd       Z ed      dd       Z ed      dd       Z ed      dd       Z ed      d        Z ed      d        Z ed      d        Z ed      dd       Z ed      dd       Z ed      dd       Z ed       	 	 	 	 dd!       Z ed"      d#        Z ed$      d%        Z ed&      dd'       Z ed(      	 	 	 	 dd)       Z ed*      d+        Z ed,      dd-       Z  ed.      d	d/       Z!d0 Z"dd1Z#d2 Z$d3 Z% ed4      	 d
d5       Z& ed6      	 	 	 	 dd7       Z' ed8      	 	 	 	 dd9       Z( ed:      	 	 	 	 dd;       Z) ed<      d=        Z* ed>      d?        Z+ ed@      dA        Z, edB      dC        Z- edD      ddE       Z. edF      ddG       Z/ edH      ddI       Z0 edJ      	 	 	 	 ddK       Z1 edL      dM        Z2 edN      ddO       Z3 edP      dQ        Z4 edR      ddS       Z5 edT      dU        Z6 edV      dW        Z7 edX      dY        Z8 edZ      dd[       Z9 ed\      dd]       Z: ed^      d_        Z; ed`      dda       Z< edb      ddc       Z= edd      de        Z> edf      dg        Z? edh      di        Z@ edj      dk        ZA edl      dm        ZB edn      do        ZC edp      dq        ZD edr      ds        ZE edt      du        ZF edv      ddw       ZG edx      dy        ZH edz      d{        ZI ed|      d}        ZJ ed~      dd       ZK ed      d d       ZL ed      d        ZM ed      d d       ZN ed      d d       ZO ed      d        ZP ed      d        ZQ ed      d        ZR ed      d        ZS ed      d        ZT ed      d        ZU ed      dd       ZV ed      dd       ZW ed      d        ZX ed      	 	 	 	 dd       ZY ed      	 	 	 	 dd       ZZ ed      d        Z[ ed      d d       Z\ ed      dd       Z] ed      dd       Z^ ed      	 d	d       Z_ ed      dd       Z` ed      d	d       Za ed      d        Zb ed      dd       Zc ed      d        Zd ed      d        Ze ed      	 dd       Zf ed      d        Zg ed      d        Zh ed      	 	 	 	 	 	 	 	 dd       Zi ed      d        Zj ed      	 	 	 	 dd       Zk ed      d        Zl ed«      dÄ        Zm edī      dń        Zn edƫ      dǄ        Zo edȫ      dɄ        Zp edʫ      dd˄       Zq ed̫      d̈́        Zr edΫ      dτ        Zs edЫ      	 ddф       Zt edҫ      ddӄ       Zu edԫ      ddՄ       Zv ed֫      dׄ        Zw edث      dل        Zx edګ      dۄ        Zy edܫ      dd݄       Zz edޫ      d d߄       Z{ ed      d        Z| ed      d d       Z} ed      d        Z~ ed      d        Z ed      dd       Z ed      d        Z ed      d        Z ed      d        Z ed      dd       Z ed      d        Z ed      d        Z ed      d        Z ed      d d       Z ed      d	d       Z ed      dd       Z ed      dd       Zy(  z#Legacy Keras 1/2 backend functions.    N)backend)keras_export)
tensorflowzkeras._legacy.backend.absc                 ,    t        j                  |       S DEPRECATED.)tfabsxs    H/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/legacy/backend.pyr
   r
           66!9    zkeras._legacy.backend.allc                 x    t        j                  | t         j                        } t        j                  | ||      S r   )r	   castbool
reduce_allr   axiskeepdimss      r   allr      +     	277A==D(++r   zkeras._legacy.backend.anyc                 x    t        j                  | t         j                        } t        j                  | ||      S r   )r	   r   r   
reduce_anyr   s      r   anyr      r   r   zkeras._legacy.backend.argmaxc                 .    t        j                  | |      S r   )r	   argmaxr   r   s     r   r   r   #        99Qr   zkeras._legacy.backend.argminc                 .    t        j                  | |      S r   )r	   argminr   s     r   r!   r!   )   r   r   zkeras._legacy.backend.arangec                     || dk  rd} t        j                  | ||d      }|dk7  rt        j                  ||      }|S )r   r   arange)limitdeltanameint32)r	   ranger   )startstopstepdtyperesults        r   r#   r#   /   sE     |	XXe4t(CF'Mr   zkeras._legacy.backend.batch_dotc                    | j                   }|j                   }t        |      }t        |      }|dk  s|dk  r)t        dt        |      z   dz   t        |      z   dz         |d   }|d   }|0|.||k7  r)t        dt        |      z   dz   t        |      z   dz         t	        |t
              r||g}||dk(  r|dz
  |dz
  g}n
|dz
  |dz
  g}t        d	 |D              rt        d
t        |      z         t        |      }|d   dk  r|dxx   |z  cc<   |d   dk  r|dxx   |z  cc<   d|v rt        d      |\  }	}
||	   }||
   }|L|J||k7  rEt        dt        |      z   dz   t        |      z   dz   t        |      z   d|d   |d   ||fz  z         |}|}|dk(  r t        j                  | d      } |	dz  }	|dz  }|dk(  rt        j                  |d      }|dz  }|	|dz
  k7  rNt        t        |            }t        |	|dz
        D ]  }||dz      ||<    |	|d<   t        j                  | |      } |
dk7  rLt        t        |            }t        |
dd      D ]  }||dz
     ||<    |
|d<   t        j                  ||      }|dkD  rQt        j                   |       }|dd }t        j                  |d   d|d   g      }t        j                  | |      } d}nd}|dkD  rQt        j                   |      }|dd }t        j                  |d   |d   dg      }t        j                  ||      }d}nd}t        j                  | |      }t        j                   |      }d}|r!t        j                  |dd |dd gd      }d}|rt        j                  |dd gd      }d}|rt        j                  ||      }|dk(  rt        j                   |d      }|S |dk(  rt        j                   |d      }|S )r      zLCannot do batch_dot on inputs with rank < 2. Received inputs with tf.shapes z and .r   NzYCannot do batch_dot on inputs with different batch sizes. Received inputs with tf.shapes    c              3   H   K   | ]  }t        |t        t        f        y wN)
isinstancelisttuple).0as     r   	<genexpr>zbatch_dot.<locals>.<genexpr>e   s     9qjT5M*9s    "zYMultiple target dimensions are not supported. Expected: None, int, (int, int), Provided: zCannot perform batch_dot over axis 0. If your inputs are not batched, add a dummy batch dimension to your inputs using K.expand_dims(x, 0)z-Cannot do batch_dot on inputs with tf.shapes z with axes=z(. x.shape[%d] != y.shape[%d] (%d != %d).   TF)shapelen
ValueErrorstrr4   intpy_anyr5   r	   expand_dimsr(   	transposestackreshapematmulconcatsqueeze)r   yaxesx_shapey_shapex_ndimy_ndimx_batch_sizey_batch_sizea0a1d1d2orig_x_ndimorig_y_ndimpatterni
x_mid_dimsx_squashed_shape
x_squashedy_trail_dimsy_squashed_shape
y_squashedr-   output_shape
do_reshapes                             r   	batch_dotra   :   s    ggGggG\F\FzVaZ. 'l 	
 'l 
 	
 1:L1:LL$<<'2 g, 	
 g,   $d||Q;QJ
+DQJ
+D9D99 $i
 	
 :D Aw{Q6Aw{Q6 	Dy/
 	
 FB	B	B	~".R2X;'l 'l 	
 $i 9AwQR())	
 		
 KK {NN1a 
a!{NN1a ! 
VaZuV}%r6A:& 	(A QGAJ	(LLG$ 
QwuV}%r1b! 	(A QGAJ	(
LLG$ z((1+Qr]
88WQZWR[$ABJJq*+

z((1+qr{88WQZR$@AJJq*+

YYq!_F 88F#LJyy"1z<+<=q
 
yy,s"3\!BAF
FL1 aFA& M 
	FB'Mr   z#keras._legacy.backend.batch_flattenc                     t        j                  | t        j                  dt        t        j                  |       dd       g            } | S )r   r:   r1   N)r	   rE   rD   prodr<   r   s    r   batch_flattenrd      s:     	

1bhhD!QR$9:;<AHr   z%keras._legacy.backend.batch_get_valuec                 H    | D cg c]  }|j                          c}S c c}w r   )numpy)tensorsr   s     r   batch_get_valuerh      s      ''!AGGI'''s   z%keras._legacy.backend.batch_set_valuec                     t        j                         st        j                         rG| D ]A  \  }}t        j                  ||j
                  j                        }|j                  |       C yyr   r,   N)r	   executing_eagerlyinside_functionnpasarrayr,   r&   assign)tuplesr   values      r   batch_set_valuers      sV     
!3!3!5 	HAuJJuAGGLL9EHHUO	 "6r   z)keras._legacy.backend.batch_normalizationc                 J    t         j                  j                  | |||||      S r   )r	   nnbatch_normalization)r   meanvarbetagammar   epsilons          r   rv   rv      s#     55$$Qc4HHr   zkeras._legacy.backend.bias_addc                 v   |t        j                         }|dvrt        d|       |j                  }t	        |      dk7  rAt	        |      t        |       dz
  k7  r't        dt	        |       dt        |       dz
   d      t	        |      dk(  rI|dk(  r"t        j                  j                  | |d	
      S t        j                  j                  | |d
      S t        |       dv r3|dk(  rd|d   f|dd z   }| t        ||      z   S | t        |d|z         z   S t        j                  j                  | |      S )r   N>   channels_lastchannels_firstUnknown data_format: r1   zUnexpected bias dimensions z. Expected it to be 1 or z dimensionsr~   NCHW)data_formatNHWC)r;         r:   r1   )
r   image_data_formatr>   r<   r=   ndimr	   ru   bias_addrE   )r   biasr   
bias_shapebias_reshape_axiss        r   r   r      sE    //1==0>??J
:!J47Q; >)#j/): ;&&*1gk]+?
 	

 :!**55>>!Tv>>>uu~~a6~::Aw)**!"JrN 3j"o Ewt%677774
!233355>>!T""r   z)keras._legacy.backend.binary_crossentropyc                 (   t        j                  |       } t        j                  |      }|r!t         j                  j                  | |      S t        j                  t	        j
                         |j                        }t        j                  ||d|z
        }| t         j                  j                  |t	        j
                         z         z  }|d| z
  t         j                  j                  d|z
  t	        j
                         z         z  z  }| S )r   labelslogits      ?r1   )
r	   convert_to_tensorru   !sigmoid_cross_entropy_with_logitsr   r{   r,   clip_by_valuemathlog)targetoutputfrom_logitsepsilon_bces        r   binary_crossentropyr     s     !!&)F!!&)Fuu66& 7 
 	
 ##GOO$5v||DHfhh?F 277;;v(99:
:CAJ"''++a&j7??3D&DEEEC4Kr   z/keras._legacy.backend.binary_focal_crossentropyc                     |rt        j                  |      n|}| |z  d| z
  d|z
  z  z   }t        j                  d|z
  |      }t        | ||      }	||	z  }
|r| |z  d| z
  d|z
  z  z   }||
z  }
|
S )r   r1   r   )r   r   r   )r	   sigmoidpowr   )r   r   apply_class_balancingalpharz   r   	sigmoidalp_tfocal_factorr   	focal_bceweights               r   binary_focal_crossentropyr   &  s     '2

6"vI
9
F
q9}=
=C 66#)U+L C
 s"I%1v:!e)"<<Y&	r   zkeras._legacy.backend.castc                 .    t        j                  | |      S r   )r	   r   )r   r,   s     r   r   r   F  s     771er   z$keras._legacy.backend.cast_to_floatxc                    t        | t        j                  t        j                  t        j                  f      r)t        j
                  | t        j                               S t        j                  | t        j                               S r   rk   )
r4   r	   TensorVariableSparseTensorr   r   floatxrn   ro   r   s    r   cast_to_floatxr   L  sQ     !biiboo>?wwq 011::aw~~/00r   z.keras._legacy.backend.categorical_crossentropyc                 "   t        j                  |       } t        j                  |      }| j                  j                  |j                         |r"t         j                  j                  | ||      S |t        j                  ||d      z  }t        j                  t        j                         |j                        }t        j                  ||d|z
        }t        j                  | t         j                  j                  |      z  |       S )r   )r   r   r   Tr   )r	   r   r<   assert_is_compatible_withru   !softmax_cross_entropy_with_logits
reduce_sumr   r{   r,   r   r   r   )r   r   r   r   r   s        r   categorical_crossentropyr   T  s     !!&)F!!&)F
LL**6<<8uu66&t 7 
 	
 bmmFD$77F ##GOO$5v||DHfhh?FMM&277;;v#66===r   z4keras._legacy.backend.categorical_focal_crossentropyc                    t        j                  |       } t        j                  |      }| j                  j                  |j                         |r!t         j                  j                  ||      }|t        j                  ||d      z  }t        j                  t        j                         |j                        }t        j                  ||d|z
        }|  t         j                  j                  |      z  }t        j                  d|z
  |      }t        j                  ||      }	t        j                  |	|      }
t        j                  |
|      }
|
S )r   r   Tr   r   r   )r	   r   r<   r   ru   softmaxr   r   r{   r,   r   r   r   r   multiply)r   r   r   rz   r   r   r   ccemodulating_factorweighting_factor	focal_cces              r   categorical_focal_crossentropyr   l  s    !!&)F!!&)F
LL**6<<8vD1 bmmFEEF##GOO$5v||DHfhh?F 'BGGKK'
'C sV|U3{{#4e< ,c2Iid3Ir   zkeras._legacy.backend.clipc                     t        |t        t        f      rt        |t        t        f      r||k  r|}|t        j                   }|t        j                  }t        j                  | ||      S r   )r4   r@   floatrn   infr	   r   )r   	min_value	max_values      r   clipr     sf     )c5\*zC<0 y !IVVG	FF	Ay)44r   z!keras._legacy.backend.concatenatec                 h   |dk  rt        | d         }|r||z  }nd}t        d | D              r*t        j                  j                  j                  ||       S t        d | D              rt        j                  | |      S t        j                  | D cg c]  }t        |       c}|      S c c}w )r   r   c              3   2   K   | ]  }t        |        y wr3   )	is_sparser7   r   s     r   r9   zconcatenate.<locals>.<genexpr>  s     ,qil,s   c              3   P   K   | ]  }t        |t        j                           y wr3   )r4   r	   RaggedTensorr   s     r   r9   zconcatenate.<locals>.<genexpr>  s     @1
1boo.@s   $&)r   py_allr	   compatv1sparse_concatrG   to_dense)rg   r   rankr   s       r   concatenater     s     axGAJDLDD,G,,yy||))$88	@@	@yy$''yyw7!(1+7>>7s   B/zkeras._legacy.backend.constantc                 `    |t        j                         }t        j                  | |||      S )r   )r,   r<   r&   )r   r   r	   constant)rr   r,   r<   r&   s       r   r   r     s*     } ;;uETBBr   c                     d}|dk(  rd}| |fS )NNWCr~   NCW r   r   tf_data_formats      r   _preprocess_conv1d_inputr     s     N&&nr   c                 T    d}|dk(  r|rt        j                  | d      } | |fS d}| |fS )Nr   r~   r   r/   r;   r1   r   r	   rC   )r   r   force_transposer   s       r   _preprocess_conv2d_inputr     sB    N&&Q-A n $Nnr   c                     d}|dk(  rd}| |fS )NNDHWCr~   NCDHWr   r   s      r   _preprocess_conv3d_inputr     s     N&& nr   c                 B    | dk(  rd} | S | dk(  rd} | S t        d|        )NsameSAMEvalidVALIDzInvalid padding: )r>   )paddings    r   _preprocess_paddingr     sA    &
 N	 
G	 N ,WI677r   zkeras._legacy.backend.conv1dc                    |t        j                         }|dvrt        d|       |j                  j	                         }|dk(  r||d   dz
  z  }t        | |df      } d}t        |      }t        | |      \  } }t        j                  j                  j                  j                  | |||||      } |dk(  r|d	k(  rt        j                  | d
      } | S )r   >   r}   r~   r   causalr   r1   r   inputfilterdilation_ratestridesr   r   r~   r   )r   r/   r1   )r   r   r>   r<   as_listtemporal_paddingr   r   r	   r   r   ru   convolutionrC   )	r   kernelr   r   r   r   kernel_shapeleft_padr   s	            r   conv1dr     s    
 //1==0>??<<'')L( LOa$78Q1.!'*G0K@A~
		###" 	$ 	A &&>U+BLLI&Hr   zkeras._legacy.backend.conv2dc                 <   |t        j                         }|dvrt        d|       t        | |      \  } }t	        |      }t
        j                  j                  j                  j                  | |||||      } |dk(  r|dk(  rt        j                  | d      } | S )r   >   r}   r~   r   r   r~   r   r   r;   r1   r/   )r   r   r>   r   r   r	   r   r   ru   r   rC   r   r   r   r   r   r   r   s          r   conv2dr     s     //1==0>??0K@A~!'*G
		###" 	$ 	A &&>V+CLLL)Hr   z&keras._legacy.backend.conv2d_transposec                    |t        j                         }|dvrt        d|       |dk(  r|dk7  rd}nd}t        | ||      \  } }|dk(  r|dk(  r|d	   |d
   |d   |d   f}|d	   (t	        j
                  |       d	   ft        |dd       z   }t        |t        t        f      rt	        j                  t        |            }t        |      }|dk(  r	d|z   dz   }nd|z   }|dk(  r:t        j                  j                  j                  j                  | |||||      } n@|d	   |d   k7  rt        d|       t        j                  j                  | |||d	   |      } |dk(  r|dk(  rt	        j                   | d      } | S )r   N>   r}   r~   r   r~   r1   r1   TFr   r   r/   r;   r1   r   r   r   zmExpected the 2 dimensions of the `dilation_rate` argument to be equal to each other. Received: dilation_rate=)rater   r   )r   r   r>   r   r	   r<   r6   r4   r5   rD   r   r   r   ru   conv2d_transposeatrous_conv2d_transposerC   )	r   r   r_   r   r   r   r   r   r   s	            r   r   r     s    //1==0>?? &&=F+B0	;A~ &&>V+COOOO	
 AA(5ab1A+BB,.xx\ 23!'*G.4'7"IILLOO,,& - 
 }Q//++8/; 
 EE))v|-*:G * 
 &&>V+CLLL)Hr   zkeras._legacy.backend.conv3dc                 <   |t        j                         }|dvrt        d|       t        | |      \  } }t	        |      }t
        j                  j                  j                  j                  | |||||      } |dk(  r|dk(  rt        j                  | d      } | S )r   >   r}   r~   r   r   r~   r   r   r   r1   r/   r;   )r   r   r>   r   r   r	   r   r   ru   r   rC   r   s          r   conv3dr  b  s     //1==0>??0K@A~!'*G
		###" 	$ 	A &&>W+DLLO,Hr   zkeras._legacy.backend.cosc                 ,    t        j                  |       S r   )r	   cosr   s    r   r  r    r   r   z"keras._legacy.backend.count_paramsc                 \    t        j                  | j                  j                               S r   )rn   rc   r<   r   r   s    r   count_paramsr    s     77177??$%%r   z$keras._legacy.backend.ctc_batch_costc                 l   t        j                  t        j                  |d      t         j                        }t        j                  t        j                  |d      t         j                        }t        j                  t	        | |      t         j                        }t         j
                  j                  t        j                  |g d      t        j                         z         }t        j                  t         j                  j                  j                  j                  |||      d      S )r   r:   r   r1   r   r/   perm)inputsr   sequence_lengthr1   )r	   r   rH   r'   ctc_label_dense_to_sparser   r   rC   r   r{   rB   r   r   ru   ctc_loss)y_truey_predinput_lengthlabel_lengthsparse_labelss        r   ctc_batch_costr    s     772::l<bhhGL772::l<bhhGLGG!&,7M WW[[
V),w/@@F >>
		  - 	! 	
 	
	 r   z/keras._legacy.backend.ctc_label_dense_to_sparsec                    t        j                  |       }t        j                  |d   g      }t        j                  |d   g      fd}t        j                  t        j                  d|d   gd      t         j
                        }t         j                  j                  j                  |||d      }|dddddf   }t        j                  t        j                  t        j                  d|d         |      |      }t         j                  j                  j                  ||      }t        j                  t        j                  t        j                  t        j                  d|d               t        |d                  }	t         j                  j                  j                  |	|      }
t        j                  t        j                  t        |
|gd      ddg            }t         j                  j                  j!                  | |      }t        j"                  t        j                  |t         j$                        |t        j                  |t         j$                              S )	r   r   r1   c                     t        j                  t        j                  t        j                  |       d         d      t        j                  |      k  S )Nr1   r   )r	   rB   r(   r<   fill)	old_inputcurrent_inputmax_num_labels_tnss     r   range_less_thanz2ctc_label_dense_to_sparse.<locals>.range_less_than  sC    ~~bhhrxx	':1'=>BRWWF
 
 	
r   )initializerparallel_iterationsNr   r/   r:   )r	   r<   rD   r   r  r   r   r   scanrE   tiler(   boolean_maskrC   reverser   	gather_ndr   int64)r   label_lengthslabel_shapenum_batches_tnsr  init
dense_masklabel_array	label_indbatch_array	batch_indindicesvals_sparser  s                @r   r  r    s    ((6"KhhA/0O;q>"23

 77277A{1~.2BGG<D""Da # J Aq!G$J**
KN+_={K 		))+zBI,,


GGBHHQA/1CDK#	
K 		))+zBIll


;	95A>BHG )),,((9K??
"Kbhh1O r   z keras._legacy.backend.ctc_decodec                    t        j                  |       }|d   |d   }}t         j                  j                  t        j                  | g d      t        j                         z         } t        j                  |t         j                        }|r%t         j                  j                  | |      \  }}	n:t         j                  j                  j                  j                  | |||      \  }}	g }
|D ]_  }t        j                  |j                  |j                   ||f      }|
j#                  t         j$                  j'                  |d             a |
|	fS )	r   r   r1   r
  r  )r  r  )r  r  
beam_width	top_pathsr:   )sp_inputdefault_value)r	   r<   r   r   rC   r   r{   r   r'   ru   ctc_greedy_decoderr   r   ctc_beam_search_decoderr   r/  valuesappendsparser   )r  r  greedyr2  r3  input_shapenum_samples	num_stepsdecodedlog_probdecoded_densests               r   
ctc_decoderC    s&    ((6"K(^[^KWW[[
V),w/@@F 77<2L ee66< 7 
( !iillooEE(!	 F 
( M P__RZZ[)4LMRYY//2/NOP 8$$r   zkeras._legacy.backend.cumsumc                 0    t        j                  | |      S r   r   )r	   cumsumr   s     r   rF  rF    s     99QT""r   zkeras._legacy.backend.cumprodc                 D    t         j                  j                  | |      S rE  )r	   r   cumprodr   s     r   rH  rH    s     77??14?((r   z&keras._legacy.backend.depthwise_conv2dc                 :   |t        j                         }|dvrt        d|       t        | |      \  } }t	        |      }|dk(  r	d|z   dz   }nd|z   }t
        j                  j                  | |||||      } |dk(  r|dk(  rt        j                  | d      } | S )	r   >   r}   r~   r   r   r   r   r   r   	dilationsr   r~   r   )	r   r   r>   r   r   r	   ru   depthwise_conv2drC   )r   depthwise_kernelr   r   r   r   r   s          r   rL  rL    s     //1==0>??0K@A~!'*G.4'7"
	" 	 	A &&>V+CLLL)Hr   zkeras._legacy.backend.dotc                 "   t        |       t        |       dkD  st        |      dkD  rg }t        | j                  t        j                  t        j                  |                   D ]*  \  }}||j                  |       |j                  |       , t        |      }g }t        |j                  t        j                  t        j                  |                  D ]*  \  }}||j                  |       |j                  |       , t        |      }t        t        t        |                  }|j                  d      g|z   }t        j                  | d|d   g      }t        j                  t        j                  ||      |d   dg      }t        j                  t        j                  ||      |dd |dd z   |dd z         S t        |       r"t        j                  j                  | |      }	|	S t        j                  | |      }	|	S )r   Nr/   r:   r  )r   zipr<   r	   unstackr9  r6   r5   r(   poprE   rC   rF   r   r:  sparse_dense_matmul)
r   rI   rK   rX   srL   y_permute_dimxtytouts
             r   dotrY    s    AwQ!tAw{BHHQK!89 	"DAq}q!q!		"
 .BHHQK!89 	"DAq}q!q!		"
 .U47^,&**2./-?ZZB,-ZZQ];gbk2=NOzzIIb"ws|gcrl:WRS\I
 	
 |ii++Aq1 J ii1oJr   zkeras._legacy.backend.dropoutc                     |t         j                  j                  d      }t        j                  j                  | |||      S )r       cA)r   noise_shapeseed)rn   randomrandintr	   ru   dropout)r   levelr\  r]  s       r   r`  r`  5  s8     |yy  &55==Kd=KKr   zkeras._legacy.backend.dtypec                 B    | j                   j                  j                  S r   )r,   
base_dtyper&   r   s    r   r,   r,   =  s     77"""r   zkeras._legacy.backend.eluc                     t         j                  j                  |       }|dk(  r|S t        j                  | dkD  |||z        S )r   r1   r   )r	   ru   eluwhere)r   r   ress      r   re  re  C  s<     %%))A,Cz
xxAsECK00r   zkeras._legacy.backend.equalc                 .    t        j                  | |      S r   )r	   equalr   rI   s     r   ri  ri  M  s     88Aq>r   zkeras._legacy.backend.evalc                 *    t        t        |             S r   )	get_valuer   r   s    r   evalrm  S  s     Xa[!!r   zkeras._legacy.backend.expc                 ,    t        j                  |       S r   )r	   expr   s    r   ro  ro  Y  r   r   z!keras._legacy.backend.expand_dimsc                 .    t        j                  | |      S r   )r	   rB   r   s     r   rB   rB   _  s     >>!T""r   zkeras._legacy.backend.eyec                     |t        j                         }t        j                  |      }t	        t        j
                  | |      ||      S r   )r   r   r	   as_dtypevariableeye)sizer,   r&   tf_dtypes       r   rt  rt  e  s=     } {{5!HBFF4x0%>>r   zkeras._legacy.backend.flattenc                 0    t        j                  | dg      S )r   r:   r	   rE   r   s    r   flattenry  n  s     ::a"r   zkeras._legacy.backend.foldlc                 \    t         j                  j                  j                  | |||      S r   )r  r&   )r	   r   r   foldlfnelemsr  r&   s       r   r|  r|  t  &     99<<b%[tLLr   zkeras._legacy.backend.foldrc                 \    t         j                  j                  j                  | |||      S r{  )r	   r   r   foldrr}  s       r   r  r  z  r  r   zkeras._legacy.backend.gatherc                 V    t         j                  j                  j                  | |      S r   )r	   r   r   gather)	referencer/  s     r   r  r    s     99<<y'22r   zkeras._legacy.backend.get_valuec                    t        j                  |       s| S t        j                         s$t        | t         j                  j
                        r| j                         S t        | dd      sBt         j                  j                  j                         5  | j                         cddd       S t        j                         5  | j                         cddd       S # 1 sw Y   7xY w# 1 sw Y   yxY w)r   _in_graph_modeTN)r	   	is_tensorrl   r4   __internal__EagerTensorrf   getattreager_context
eager_mode
init_scoper   s    r   rl  rl    s     <<?	Ar/J/J!Kwwy1&- __**557 	779	 		 wwy 	 	 s   CC)C&)C2zkeras._legacy.backend.gradientsc                 Z    t         j                  j                  j                  | |d      S )r   T)colocate_gradients_with_ops)r	   r   r   	gradients)loss	variabless     r   r  r    s+     99<<!!iT "  r   zkeras._legacy.backend.greaterc                 .    t        j                  | |      S r   r	   greaterrj  s     r   r  r         ::ar   z#keras._legacy.backend.greater_equalc                 .    t        j                  | |      S r   )r	   greater_equalrj  s     r   r  r    s     Aq!!r   z"keras._legacy.backend.hard_sigmoidc                    t        j                  d| j                        }t        j                  d| j                        }t        j                  | |      } t        j                  | |      } t        j
                  | dd      } | S )r   g?rk   g      ?        r   )r	   r   r,   r   addr   )r   	point_two
point_fives      r   hard_sigmoidr    si     $$S8I%%c9J
Ay!A
q*A
C%AHr   zkeras._legacy.backend.in_top_kc                 l    t         j                  j                  j                  j	                  | ||      S r   )r	   r   r   r   in_top_k)predictionstargetsks      r   r  r    s'     99<<%%k7A>>r   zkeras._legacy.backend.int_shapec                     	 | j                   }t        |t              st        |j                               }|S # t        $ r Y yw xY w)r   N)r<   r4   r6   r   r>   r   r<   s     r   	int_shaper    sA    %'%--/*E s   69 	AAzkeras._legacy.backend.is_sparsec                     t        | dd      }|t        |t        j                        S t        | t        j                        S )r   
_type_specN)r  r4   r	   SparseTensorSpecr   )tensorspecs     r   r   r     s<     6<.D$ 3 344fboo..r   z"keras._legacy.backend.l2_normalizec                 D    t         j                  j                  | |      S rE  )r	   linalgl2_normalizer   s     r   r  r    s     99!!!$!//r   zkeras._legacy.backend.lessc                 .    t        j                  | |      S r   r	   lessrj  s     r   r  r    s     771a=r   z keras._legacy.backend.less_equalc                 .    t        j                  | |      S r   )r	   
less_equalrj  s     r   r  r    s     ==Ar   zkeras._legacy.backend.logc                 @    t         j                  j                  |       S r   )r	   r   r   r   s    r   r   r     s     77;;q>r   zkeras._legacy.backend.map_fnc                 \    t         j                  j                  j                  | |||      S )r   )r&   r,   )r	   r   r   map_fn)r~  r  r&   r,   s       r   r  r    s&     99<<r5t5AAr   zkeras._legacy.backend.maxc                 0    t        j                  | ||      S r   )r	   
reduce_maxr   s      r   maxr         ==D(++r   zkeras._legacy.backend.maximumc                 .    t        j                  | |      S r   )r	   maximumrj  s     r   r  r    r  r   zkeras._legacy.backend.meanc                     | j                   j                  t        j                  k(  r(t        j                  | t        j                               } t        j                  | ||      S r   )r,   rc  r	   r   r   r   r   reduce_meanr   s      r   rw   rw     sD     	wwRWW$GGAw~~'(>>!T8,,r   zkeras._legacy.backend.minc                 0    t        j                  | ||      S r   )r	   
reduce_minr   s      r   minr    r  r   zkeras._legacy.backend.minimumc                 .    t        j                  | |      S r   )r	   minimumrj  s     r   r  r    r  r   z+keras._legacy.backend.moving_average_updatec                     t        j                  || j                        }t        j                  || j                        }| j                  | |z
  d|z
  z        S )r   r1   )r	   r   r,   
assign_sub)r   rr   momentums      r   moving_average_updater    sH     wwx)HGGE177#E<<Uq8|455r   z keras._legacy.backend.name_scopec                 ,    t        j                  |       S r   )r	   
name_scope)r&   s    r   r  r    s     ==r   zkeras._legacy.backend.ndimc                 .    | j                   j                  S r   )r<   r   r   s    r   r   r     s     77<<r   zkeras._legacy.backend.not_equalc                 .    t        j                  | |      S r   )r	   	not_equalrj  s     r   r  r  "  s     <<1r   zkeras._legacy.backend.one_hotc                 2    t        j                  | |d      S )r   r:   )depthr   )r	   one_hot)r/  num_classess     r   r  r  (  s     ::g[r::r   zkeras._legacy.backend.onesc                 T   t        j                         5  |t        j                         }t        j                  |      }t        j
                  | ||      }t        |j                  j                               rt        |||      cddd       S |cddd       S # 1 sw Y   yxY wr   N)r<   r,   r&   r,   r&   )
r	   r  r   r   rr  onesr   r<   r   rs  r<   r,   r&   rv  vs        r   r  r  .  s     
 =NN$E;;u%GG%xd;!''//#$AU6       A4BBB'zkeras._legacy.backend.ones_likec                 2    t        j                  | ||      S r   r  )r	   	ones_liker   r,   r&   s      r   r  r  ;  s     <<T22r   z(keras._legacy.backend.permute_dimensionsc                 0    t        j                  | |      S )r   r  r   )r   rW   s     r   permute_dimensionsr  A  s     <<((r   zkeras._legacy.backend.pool2dc                    |t        j                         }|dvrt        d|       t        |      dk7  rt        d      t        |      dk7  rt        d      t	        | |      \  } }t        |      }|dk(  rd|z   dz   }d|z   dz   }n
d|z   }d|z   }|d	k(  r9t        j                  j                  j                  j                  | ||||
      } nU|dk(  r9t        j                  j                  j                  j                  | ||||
      } nt        dt        |      z         |dk(  r|dk(  rt        j                  | d      } | S )r   >   r}   r~   r   r/   z*`pool_size` must be a tuple of 2 integers.(`strides` must be a tuple of 2 integers.r   r   r   r  r   avgInvalid pooling mode: r~   r   )r   r   r>   r=   r   r   r	   r   r   ru   max_poolavg_poolr?   rC   r   	pool_sizer   r   r   	pool_moder   s          r   pool2dr  G  s^    //1==0>??
9~EFF
7|qCDD0K@A~!'*G.4'9$t+	7"Y&	EIILLOO$$y'7 % 
 
e	IILLOO$$y'7 % 
 1C	NBCC&&>V+CLLL)Hr   zkeras._legacy.backend.pool3dc                    |t        j                         }|dvrt        d|       t        | |      \  } }t	        |      }|dk(  rd|z   dz   }d|z   dz   }n
d|z   }d|z   }|dk(  r%t
        j                  j                  | ||||      } nA|dk(  r%t
        j                  j                  | ||||      } nt        d	t        |      z         |d
k(  r|dk(  rt        j                  | d      } | S )r   >   r}   r~   r   r   r   r   r  r   r  r  r~   r  )r   r   r>   r   r   r	   ru   
max_pool3d
avg_pool3dr?   rC   r  s          r   pool3dr  s  s    //1==0>??0K@A~!'*G .4'9$t+	7"Y&	EEEy'7  
 
e	EEy'7  
 1C	NBCC&&>W+DLLO,Hr   zkeras._legacy.backend.powc                 .    t        j                  | |      S r   )r	   r   )r   r8   s     r   r   r     s     66!Q<r   zkeras._legacy.backend.prodc                 0    t        j                  | ||      S r   )r	   reduce_prodr   s      r   rc   rc     s     >>!T8,,r   z&keras._legacy.backend.random_bernoullic                 8   |t        j                         }|t        j                  j	                  d      }t        j                  t
        j                  j                  | ||      |k  t        j                  | |      t        j                  | |            S )r   r[  r,   r]  rk   )
r   r   rn   r^  r_  r	   rf  uniformr  zeros)r<   pr,   r]  s       r   random_bernoullir    sy     } |yy  &88
		%u48A=
U#
e$ r   z#keras._legacy.backend.random_normalc                     |t        j                         }|t        j                  j	                  d      }t
        j                  j                  | ||||      S )r   r[  )rw   stddevr,   r]  )r   r   rn   r^  r_  r	   normalr<   rw   r  r,   r]  s        r   random_normalr    sU     } |yy  &99Du4   r   z,keras._legacy.backend.random_normal_variablec                    |t        j                         }t        j                  |      }|t        j
                  j                  d      }t        j                  j                  j                  ||||      |       }t        |||      S r   g    eAr  r  )r   r   r	   rr  rn   r^  r_  r   r   random_normal_initializerrs  )r<   rw   scaler,   r&   r]  rv  rr   s           r   random_normal_variabler    s{    
 } {{5!H|yy  &IILL22e8$ 3 E ET22r   z$keras._legacy.backend.random_uniformc                     |t        j                         }|t        j                  j	                  d      }t
        j                  j                  | ||||      S )r   r[  )minvalmaxvalr,   r]  )r   r   rn   r^  r_  r	   r  )r<   r  r  r,   r]  s        r   random_uniformr    sU     } |yy  &99fV5t   r   z-keras._legacy.backend.random_uniform_variablec                    |t        j                         }t        j                  |      }|t        j
                  j                  d      }t        j                  j                  j                  ||||      |       }t        |||      S r  )r   r   r	   rr  rn   r^  r_  r   r   random_uniform_initializerrs  )r<   lowhighr,   r&   r]  rv  rr   s           r   random_uniform_variabler    s{     } {{5!H|yy  &IILL33T 4 E ET22r   zkeras._legacy.backend.reshapec                 .    t        j                  | |      S r   rx  r  s     r   rE   rE     s     ::ar   zkeras._legacy.backend.reluc                 D   t        | dt        j                               }|dk7  rr|&|dk(  r!t        j                  j                  | |      S |dk7  r$t        j                  j                  |  |z         }n#t        j                  j                  |        }nd}|du}|dk7  r/| t        j                  t        j                  | |      |      z  } nF|dk(  r"t        j                  j                  |       } d	}nt        j                  j                  |       } |rYt        j                  || j                        }t        j                  d| j                        }t        j                  | ||      } |dk7  r)t        j                  || j                        }| ||z  z  } | S )
r   r,   r  Nr   )r   r1   rk      F)r  r   r   r	   ru   
leaky_relurelur   r  relu6r   r,   r   )r   r   r   	thresholdr,   negative_partclip_maxzeros           r   r  r    sP    Aw 01E|a55##AU#33>EEJJrI~6MEEJJrNM$HA~

1i0>>	aEEKKNEEJJqM((!''B	##AQWW5Qi0|$$U!'':	U]""Hr   zkeras._legacy.backend.repeatc                     t        |       dk(  sJ t        j                  | d      } t        j                  d|dg      }t        j                  | |      S )r   r/   r1   )r   r	   rB   rD   r!  )r   nrW   s      r   repeatr    sI     7a<<
q!Ahh1ay!G771gr   z%keras._legacy.backend.repeat_elementsc                    | j                   j                         }||   Ht        j                  | ||   |      }|D cg c]  }t	        |      D ]  }|  }}}t        ||      S |dz   }t        j                   |       }t        j                  | |      }t        j                  t        | j                         dz         }	||	|<   t        j                  ||	      }t        j                  |	|      }	||	|<   t        j                  |	d      }	||	z  }t        j                  ||      }| j                   j                         }|j                  |       |S c c}}w )r   )rr   num_or_size_splitsr   r1   r   r'   rk   )r<   r   r	   splitr(   r   rB   rn   r  r=   r!  deleter   rE   	set_shape)
r   repr   rK   splitsrT  _x_repauxiliary_axisrepss
             r   repeat_elementsr!  %  s-    ggooGt} gdm$O"7qE#J7q7775$'' AXNhhqkGNN1>2E773qww<!#$DDGGE4 E 99T>*DDJ;;t7+DtOGJJug&E ggooG	OOGL5 8s    Ez#keras._legacy.backend.resize_imagesc           	         |dk(  rd\  }}n|dk(  rd\  }}nt        d|       | j                  ||dz    }|j                         r&t        j                  |j                         d      }nt        j                  |       ||dz    }|t        j                  t        j                  ||gd            z  }|dk(  rt        | g d	      } t        j                  j                  j                  t        j                  j                  j                  t        j                  j                  j                  t        j                  j                  j                  t        j                  j                  j                  t        j                  j                  j                   t        j                  j                  j"                  t        j                  j                  j$                  d
}ddj'                  |j)                               z   dz   }	||v r&t        j                  j+                  | |||         } nt        d|	 d| d      |dk(  rt        | g d      } | S )r   r~   )r/   r;   r}   )r1   r/   z Invalid `data_format` argument: r1   r'   rk   r   )areabicubicbilineargaussianlanczos3lanczos5mitchellcubicnearest"z", ")methodz+`interpolation` argument should be one of: z. Received: "z".r   )r>   r<   is_fully_definedr	   r   r   rn   arrayr  imageResizeMethodAREABICUBICBILINEARGAUSSIANLANCZOS3LANCZOS5MITCHELLCUBICNEAREST_NEIGHBORjoinkeysresize)
r   height_factorwidth_factorr   interpolationrowscols	new_shapeinterpolationsinterploations_lists
             r   resize_imagesrD  K  s   
 &&
d		'
d;K=IJJtax(I!!#KK	 1 1 37C	HHQKtax0	
-.g> I &&q,/%%**88((00HH))22HH))22HH))22HH))22..<<88((99	N N,?,?,A BBSH&HHOOAy1NOO9"#=rC
 	
 &&q,/Hr   z$keras._legacy.backend.resize_volumesc                     |dk(  r,t        | |d      }t        ||d      }t        ||d      }|S |dk(  r,t        | |d      }t        ||d      }t        ||d      }|S t        d|       )	r   r~   r/   r   r;   r   r}   r1   zInvalid data_format: )r!  r>   )r   depth_factorr<  r=  r   r   s         r   resize_volumesrG  z  s     && Lq9 Q? A>		' Lq9 Q? A>0>??r   zkeras._legacy.backend.reversec                 T    t        |t              r|g}t        j                  | |      S r   )r4   r@   r	   r#  )r   rJ   s     r   r#  r#    s&     $v::ar   zkeras._legacy.backend.rnnc           	         	
*+,-./0123456 t         j                  j                  j                         sd
d }|s t         j                  j                  |      t         j                  j                        }|d   j                  d   5|d   j                  d   +t        j                  |d         d   6|D ]  }|j                  j                  d        |n|j                  t         j                  k7  r$t        j                  |t         j                        }t        |j                        dk(  rt        |      }|s ||      }g d(d*|rŉ5st        d	      t              }g }g }fd
}t         j                  j!                        r!t         j                  j                  |      3n	 |      f33fd}|t        j"                  |      }r|j%                          t'        5      D ]   } ||      }||   /  |t        |      t              z         \  }} */|      }|st)        |      }n|d   }t        j*                  |||      }t         j                  j                  |      }t         j                  j                  |      }t        */fd|D              }t        d t-        |||      D              }t         j                  j/                  ||      }
r$|j1                  |       |j1                  |       |g}|g}# |d   }|d   }t        j2                  |      }	rt        j*                   *|d   |      |t)        |            }t        j*                   *||d      |t)        |            }ngt'        5      D ]V  } ||      }  |t        |      t              z         \  }}
r#|j1                  |       |j1                  |       Q|g}|g}X |d   }|d   }t        j2                  |      }nt              }t        6fdt5        |      D              .t        fdt-        .|      D              .t         j                  j/                  |D cg c]  }|d   	 c}      }  |t              t              z         \  } }!
r6nd2t        2fdt5        t         j                  j                  |             D              }"t        j6                  ddd      }#6}$nt        j8                        }$6fd|$ddd}%|Prt%        |d      }t        j:                  t         j                  6d      00j#                  |      00fd1*fd,n]t=        t         j>                        rAr6t        j8                  d      }&t        j@                  |&dz
        44fd1nfd1d  ,nd11tt        d! t         j                  j                  |       D              -,-.1
 	f	d"}'t        jB                  jD                  jF                  d)|'|#|"-f|z   d#|%}(|(dd }n@.
 fd$}'t        jB                  jD                  jF                  d)|'|#|"f|z   d#|%}(|(dd }|(d   }"t        d% |"D              }t        d& |D              }t         j                  j/                  | |      }t         j                  j/                  | |      }+
5fd'})t         j                  j                  |)|      }|s t         j                  j                  ||      }|||fS c c}w )*r   Tc                     t        t        t        | j                                    }d\  |d<   |d<   t	        j
                  | |      S )N)r1   r   r   r1   )r5   r(   r=   r<   r	   rC   )input_trJ   s     r   swap_batch_timestepz rnn.<locals>.swap_batch_timestep  s=    E#gmm,-.Qa||GT**r   r   r1   r;   Nr/   c                    t         j                  j                  |       rt        d|        t         j                  j                  |      rt        d|       t	        |j
                        t	        | j
                        z
  }t        |      D ]  }t        j                  | d      }  dg|z  |j
                  j                         |d  z   }t        j                  | |      S )Nz)mask_t is expected to be tensor, but got z*input_t is expected to be tensor, but got r:   r1   )
r	   nest	is_nestedr>   r=   r<   r(   rB   r   r!  )mask_trK  	fixed_dim	rank_diffr  	multipless         r   _expand_maskzrnn.<locals>._expand_mask  s    77V$;F8D  77W%<WIF  &V\\)::	y! 	0A^^FB/F	0C)Ogmm&;&;&=ij&II	wwvy))r   z/Unrolling requires a fixed number of timesteps.c                 V    t        j                  |       } r| j                          | S r3   )r	   rQ  r#  )rK  go_backwardss    r   _process_single_input_tz$rnn.<locals>._process_single_input_t  s#    jj)G!Nr   c                 r    D cg c]  }||    	 }}t         j                  j                  |      S c c}w r3   )r	   rN  pack_sequence_as)timet_inpr  processed_inputs      r   _get_input_tensorzrnn.<locals>._get_input_tensor  s6    &562d86C677++FC88 7s   4r:   c              3   0   K   | ]  } |        y wr3   r   )r7   rT  rT  rP  s     r   r9   zrnn.<locals>.<genexpr>	  s      %01L+%s   c              3   R   K   | ]  \  }}}t        j                  |||       ! y wr3   r	   rf  )r7   mrT  pss       r   r9   zrnn.<locals>.<genexpr>  s+      * 1b HHQ2&*   %'rQ  c              3   n   K   | ],  \  }}t        j                  |j                  d |        . yw)	input_ta_r,   ru  tensor_array_nameN)r	   TensorArrayr,   )r7   rX   r\  time_steps_ts      r   r9   zrnn.<locals>.<genexpr>@  s@      
 3 NNii!$-aS/ 
s   25c              3      K   | ]5  \  }}s|j                  |      n|j                  t        |d              7 yw)r   N)rQ  r#  )r7   tainput_rV  s      r   r9   zrnn.<locals>.<genexpr>H  sE      
 F $ 

6"ZZ 234
s   ;>c              3      K   | ]7  \  }}t        j                  |j                  |j                  d |        9 yw)
output_ta_)r,   ru  element_shaperi  N)r	   rj  r,   r<   )r7   rX   rX  output_ta_sizes      r   r9   zrnn.<locals>.<genexpr>^  sH      
 3 NNii#!ii$.qc"2	 
s   =A r'   rZ  r  c                     | k  S r3   r   )rZ  r  rk  s     r   <lambda>zrnn.<locals>.<lambda>p  s    TL%8 r       )condmaximum_iterationsr  swap_memorymask_tarh  c                 &    j                  |       S r3   read)rZ  ry  s    r   
masking_fnzrnn.<locals>.masking_fn~  s    ||D))r   c                 j     t         fd|D              }t        d t        |||      D              S )Nc              3   Z   K   | ]"  } |t        j                                $ yw)re  N)r=   r<   )r7   orT  rP  s     r   r9   z5rnn.<locals>.compute_masked_output.<locals>.<genexpr>  s.      % !c&,,6GHH%s   (+c              3   R   K   | ]  \  }}}t        j                  |||       ! y wr3   ra  )r7   rb  r  fms       r   r9   z5rnn.<locals>.compute_masked_output.<locals>.<genexpr>  s+       1b HHQ2&rd  r6   rP  )rP  flat_out	flat_masktiled_mask_trT  s   `   r   compute_masked_outputz"rnn.<locals>.compute_masked_output  s?    $ %%%    $'h	$J  r   r   c                 0    t        j                  |       S r3   r  )rZ  rev_input_lengths    r   r}  zrnn.<locals>.masking_fn  s    77#3T::r   c                 0    t        j                  |       S r3   r  )rZ  r  s    r   r}  zrnn.<locals>.masking_fn  s    ::lD99r   c                 @     t         fdt        ||      D              S )Nc              3   z   K   | ]2  \  }}t         j                  j                  j                  ||       4 y wr3   )r	   r   r   rf  )r7   r  zorP  s      r   r9   z5rnn.<locals>.compute_masked_output.<locals>.<genexpr>  s4      B IILL&&vq"5s   8;r  )rP  r  r  s   `  r   r  z"rnn.<locals>.compute_masked_output  s$     #&x#;  r   c              3   F   K   | ]  }t        j                  |        y wr3   r	   
zeros_liker7   r  s     r   r9   zrnn.<locals>.<genexpr>  s      %%&a %s   !c                 @  	  t         fdD              }t        j                  j                  |      }        } |t        |      t              z         \  }}t        j                  j	                  |      }rnt        j                  j	                  |      }	 |||	      }
t        j                  j	                  |      }t        j                  j	                  |      }t        ||      D ];  \  }}t        |t        j                        s!|j                  |j                         =  |||      }t        j                  j                  ||      }r ndt        fdt        ||
      D              } dz   |t        |
      ft        |      z   S )as  RNN step function.

                Args:
                    time: Current timestep value.
                    output_ta_t: TensorArray.
                    prev_output: tuple of outputs from time - 1.
                    *states: List of states.

                Returns:
                    Tuple: `(time + 1, output_ta_t, output) + tuple(new_states)`
                c              3   @   K   | ]  }|j                          y wr3   r{  r7   rm  rZ  s     r   r9   z%rnn.<locals>._step.<locals>.<genexpr>       %Gbggdm%G   r   c              3   H   K   | ]  \  }}|j                  |        y wr3   writer7   rm  rX  ta_index_to_writes      r   r9   z%rnn.<locals>._step.<locals>.<genexpr>  )      $C HH.4$   "r1   
r6   r	   rN  rY  ry  rP  r4   r   r  r<   )rZ  output_ta_tprev_outputstatesr  rP  r   
new_statesflat_outputflat_mask_outputflat_new_output
flat_stateflat_new_statestate	new_stateflat_final_stater  r  	constantsflat_zero_outputinput_tar  r}  return_all_outputsstep_functionzero_output_for_masks   `               @r   _stepzrnn.<locals>._step  s    !&%Gh%G G " 8 8 O#D)%2!5=53C#C&"
 !ggoof5 , %5 !
 #8K)9#
  WW__V4
!#!<(+J(G 9$E9!)RYY7!++EKK89 $9NJ$   WW55 0
 -?DA!# $#&{O#D$ 
 q+u_/EFJ  r   )body	loop_varsc                     t         fdD              }t        j                  j                  |      } |t        |      t              z         \  }}t        j                  j	                  |      }t        j                  j	                  |      }t        ||      D ];  \  }}	t        |	t        j                        s!|	j                  |j                         = t        j                  j	                  |      }
r ndt        fdt        ||
      D              }t        j                  j                  |      } dz   |ft        |      z   S )a)  RNN step function.

                Args:
                    time: Current timestep value.
                    output_ta_t: TensorArray.
                    *states: List of states.

                Returns:
                    Tuple: `(time + 1,output_ta_t) + tuple(new_states)`
                c              3   @   K   | ]  }|j                          y wr3   r{  r  s     r   r9   z%rnn.<locals>._step.<locals>.<genexpr>  r  r  r   c              3   H   K   | ]  \  }}|j                  |        y wr3   r  r  s      r   r9   z%rnn.<locals>._step.<locals>.<genexpr>  r  r  r1   r  )rZ  r  r  r  r   r  r  r  r  r  r  r  r  initial_statesr  r  r  r  s   `          @r   r  zrnn.<locals>._step  s     !&%Gh%G G " 8 8 O%2!5=53C#C&"
  WW__V4
!#!<(+J(G 9$E9!)RYY7!++EKK89 !ggoof5,>DA!# $#&{K#@$ 
  WW55"N
 q+.z1BBBr   c              3   <   K   | ]  }|j                           y wr3   )rD   r  s     r   r9   zrnn.<locals>.<genexpr>  s     5a	5s   c              3   &   K   | ]	  }|d      yw)r:   Nr   r  s     r   r9   zrnn.<locals>.<genexpr>  s     3aAbE3s   c                     t        | t        j                        r=| j                  j	                         }r|d<   nd|d<   |d<   | j                  |       | S )Nr   r1   )r4   r	   r   r<   r   r  )output_r<   batchr  
time_stepss     r   r  zrnn.<locals>.set_shape  sT    gryy)MM))+E!%aaE!He$r   r   r   )$r	   r  tf2enabledrN  map_structurery  r<   with_rank_at_leastr,   r   r   r=   rB   r>   r6   rO  rQ  r#  r(   r  rf  rP  rY  r9  rD   	enumerater   r  rj  r4   r   subtractr   r   
while_loop)7r  r  r  rV  maskr  unrollr  
time_majorr  r  rL  flatted_inputsrn  r  successive_statessuccessive_outputsrW  r^  	mask_listrX   r\  r   r  r  r  flat_statesflat_new_statesflat_final_stateslast_outputoutputsinput_time_zerooutput_time_zeror  	output_tarZ  max_iterationswhile_loop_kwargsmax_lenr  final_outputsr  rT  r  r  r  r  rP  ry  r}  rr  r]  r  r  rk  s7   ```` ` ` ``                               @@@@@@@@@@@@@r   rnnr    s    ??&&(!+ &&':FCWW__V,N"((+J1##A&E88N1-.q1L  +''*+ :: 774)Dtzz?at$D&t,D	* NOO~&	 77V$ gg33'O  7v>@O	9 

4(I!!#:& !1'*"1%2vy)99&"
  ,FF;)",V"4K"4R"8K,D ggoof5"$''//*"=$ %5@%   %* *$'$o{%* %! 11&:KL%&--f5%,,V4*0&)/%C!1D -R0K*2.Jhh12G# hh 2<{+
 (( w!<w' :& 
1'*!.vy)99" &&--f5%,,V4*0&)/%
1 -R0K*2.Jhh12G ~&
  
 $N3
 
  
 "(N;
 
 ''22~6SV6

 ,U>2U95EE
! *< 
 $BGGOO4D$EF
 
	 {{1G&9)N]]<8N 9"0#%	
 tQ'nnggLIG ood+G* bii0--1=#%;;w{L#I ;
: J!  % %*,''//:J*K%  3 3j IILL33 ,<=F $M 'qr*J C  CD IILL33 +f4 $M
 'qr*J!!$	59553733''**+;WEgg../?M	 gg##Iw7G''''(;WE++g 7s   	]
zkeras._legacy.backend.roundc                 ,    t        j                  |       S r   )r	   roundr   s    r   r  r  +       88A;r   z&keras._legacy.backend.separable_conv2dc           	         |t        j                         }|dvrt        d|       t        |      dk7  rt        d      t	        | |      \  } }t        |      }t        |t              st        |      }|dk(  r	d|z   dz   }nd|z   }t        j                  j                  | ||||||      } |d	k(  r|dk(  rt        j                  | d
      } | S )r   >   r}   r~   r   r/   r  r   r   r   rJ  r~   r   )r   r   r>   r=   r   r   r4   r6   r	   ru   separable_conv2drC   )r   rM  pointwise_kernelr   r   r   r   r   s           r   r  r  1  s     //1==0>??
7|qCDD0K@A~!'*Ggu%..4'7"
	" 	 	A &&>V+CLLL)Hr   zkeras._legacy.backend.set_valuec                 |    t        j                  || j                  j                        }| j	                  |       yrj   )rn   ro   r,   r&   rp   )r   rr   s     r   	set_valuer  Z  s'     JJuAGGLL1EHHUOr   zkeras._legacy.backend.shapec                 ,    t        j                  |       S r   )r	   r<   r   s    r   r<   r<   a  r  r   zkeras._legacy.backend.sigmoidc                 0    t        j                  |       }|S r   )r	   r   )r   r   s     r   r   r   g  s     ZZ]FMr   zkeras._legacy.backend.signc                 ,    t        j                  |       S r   )r	   signr   s    r   r  r  n       771:r   zkeras._legacy.backend.sinc                 ,    t        j                  |       S r   )r	   sinr   s    r   r  r  t  r   r   zkeras._legacy.backend.softmaxc                 \   | j                   j                  dk  rt        d|        t        |t              r"t
        j                  j                  | |      }nKt        j                  | t        j                  | |d      z
        }t        j                  ||d      }||z  }| |_        |S )r   r1   z=Cannot apply softmax to a tensor that is 1D. Received input: r   Tr   )r<   r   r>   r4   r@   r	   ru   r   ro  r  r   _keras_logits)r   r   r   	numeratordenominators        r   r   r   z  s     	ww||qKA3O
 	
 $qt, FF1r}}QTDIIJ	mmID4H[( FMr   zkeras._legacy.backend.softplusc                 @    t         j                  j                  |       S r   )r	   r   softplusr   s    r   r  r         77Ar   zkeras._legacy.backend.softsignc                 @    t         j                  j                  |       S r   )r	   r   softsignr   s    r   r  r    r  r   z5keras._legacy.backend.sparse_categorical_crossentropyc           	      N   t        j                  |       } t        j                  |      }t        | d      } |skt        j                  t        j                         |j
                        }t        j                  ||d|z
        }t         j                  j                  |      }t        |j                  t        t        f      rt        |j                        }n|j                  j                  }|\||z  }||dz
  k7  rnt        t        j                   t#        |      t#        |dz   |      |g            }t        j$                  ||      }n|dk7  rt'        dj)                  |            t        j                  |      }| j                  j                  }	|	duxr |duxr |	|dz
  k7  }
|
r&t+        |       } t        j,                  |d|d   g      }|4t        j.                  | t        || j
                              }| |   } ||   }t         j0                  j3                  | |      }|Xt        |dd d      }t        j,                  |      }t        j4                  t        j6                  |      ||      }||_        |S |
r|dk\  rt        j,                  ||dd       }|S )	r   r%  r1   Nr  r:   zcCannot compute sparse categorical crossentropy with `axis={}` on an output tensor with unknown rankr   r;   )r	   r   r   r   r{   r,   r   r   r   r4   r<   r6   r5   r=   ndims	itertoolschainr(   rC   r>   formatry  rE   r  ru   (sparse_softmax_cross_entropy_with_logits
scatter_ndrf  _keras_mask)r   r   r   r   ignore_classr   output_rankpermutationr_   target_rankupdate_shape
valid_maskrg  	res_shapes                 r   sparse_categorical_crossentropyr     sj   
 !!&)F!!&)F&'"F''(96<<H!!&(ALAV$ &,,.&,,'ll((;?"$Ktax!=vK
 \\&{;F	44:F4L
 	
 88F#L,,$$K 	4 	+t#	+;?* 
 FRb)9$:;\\&$|V\\*JK

#
#
%%
8
8f 9 C cr*G4	ZZ
I6
mmBHHZ0#yA$
q( jjl3B/0Jr   z(keras._legacy.backend.spatial_2d_paddingc                    t        |      dk(  sJ t        |d         dk(  sJ t        |d         dk(  sJ |t        j                         }|dvrt        d|       |dk(  r#ddgddgt	        |d         t	        |d         g}n"ddgt	        |d         t	        |d         ddgg}t
        j                  j                  j                  | |      S )r   r/   r   r1   >   r}   r~   r   r~   )	r=   r   r   r>   r5   r	   r   r   padr   r   r   rW   s       r   spatial_2d_paddingr    s     w<1wqz?awqz?a//1==0>??&&q6Aq64
#3T'!*5EFq64
+T'!*-=1vF99<<Aw''r   z(keras._legacy.backend.spatial_3d_paddingc                    t        |      dk(  sJ t        |d         dk(  sJ t        |d         dk(  sJ t        |d         dk(  sJ |t        j                         }|dvrt        d|       |dk(  r6ddgddg|d   d   |d   d   g|d   d   |d   d   g|d   d   |d   d   gg}n5ddg|d   d   |d   d   g|d   d   |d   d   g|d   d   |d   d   gddgg}t        j
                  j                  j                  | |      S )r   r;   r   r/   r1   >   r}   r~   r   r~   )r=   r   r   r>   r	   r   r   r  r  s       r   spatial_3d_paddingr    sj    w<1wqz?awqz?awqz?a//1==0>??&&FFQZ]GAJqM*QZ]GAJqM*QZ]GAJqM*
 FQZ]GAJqM*QZ]GAJqM*QZ]GAJqM*F
 99<<Aw''r   zkeras._legacy.backend.sqrtc                     t        j                  d| j                        }t        j                  | |      } t        j                  |       S )r   r  )r	   r   r,   r  sqrt)r   r  s     r   r  r    s8     QWW-D


1dA771:r   zkeras._legacy.backend.squarec                 ,    t        j                  |       S r   )r	   squarer   s    r   r
  r
    s     99Q<r   zkeras._legacy.backend.squeezec                 0    t        j                  | |g      S r   )r	   rH   r   s     r   rH   rH   #  s     ::a$  r   zkeras._legacy.backend.stackc                 0    t        j                  | |      S rE  )r	   rD   r   s     r   rD   rD   )  s     88AD!!r   zkeras._legacy.backend.stdc                     | j                   j                  t        j                  k(  r(t        j                  | t        j                               } t        j                  j                  | ||      S r   r   )	r,   rc  r	   r   r   r   r   r   
reduce_stdr   s      r   stdr  /  sM     	wwRWW$GGAw~~'(77adX>>r   z#keras._legacy.backend.stop_gradientc                     t        | t        t        f      rt        t        j
                  |       S t	        j
                  |       S r   )r4   r5   r6   mapr	   stop_gradient)r  s    r   r  r  7  s6     )dE]+2##Y//I&&r   zkeras._legacy.backend.sumc                 0    t        j                  | ||      S r   )r	   r   r   s      r   sumr  ?  r  r   zkeras._legacy.backend.switchc                 l   | j                   t        j                  k7  rt        j                  | d      } t	        |       }|sSt              sfd}n}t              sfd}n}t        j                  j                  j                  | ||      }|S t              r        t              r        t	              }||kD  r&t        dt        |      z   dz   t        |      z         |dkD  r||z
  }t        j                  t        j                  |       dg|z  gd      }	t        j                  | |	      } t        j                        }
|
|	z
  }t        j                  |dkD  |
t        j                  |
            }t        j                   | |      } t        j                  |       }|S )	r   r   c                       S r3   r   )then_expressions   r   then_expression_fnz"switch.<locals>.then_expression_fnN  	    &&r   c                       S r3   r   )else_expressions   r   else_expression_fnz"switch.<locals>.else_expression_fnU  r  r   zuRank of `condition` should be less than or equal to rank of `then_expression` and `else_expression`. ndim(condition)=z, ndim(then_expression)=r1   r   r   )r,   r	   r   r   r   callabler   r   rv  r>   r?   rG   r<   rE   rf  r  r!  )	conditionr  r  	cond_ndimr  r  r   	expr_ndim	ndim_diff
cond_shape
expr_shape
shape_diff
tile_shapes    ``          r   switchr'  E  s    "''!GGIv.	YI(' "1(' "1IILLi);=OP@ H7 O$-/OO$-/O)	y 6 i.! -	-
 i.!  q=!I-I)$qcIo6QJ 

9j9I/2J#j0JQ
BLL,DJ 	:6IHHYAHr   zkeras._legacy.backend.tanhc                 ,    t        j                  |       S r   )r	   tanhr   s    r   r)  r)  }  r  r   z&keras._legacy.backend.temporal_paddingc                     t        |      dk(  sJ ddg|d   |d   gddgg}t        j                  j                  j	                  | |      S )r   r/   r   r1   )r=   r	   r   r   r  )r   r   rW   s      r   r   r     sR     w<11v
GAJ/!Q8G99<<Aw''r   zkeras._legacy.backend.tilec                 T    t        |t              r|g}t        j                  | |      S r   )r4   r@   r	   r!  )r   r  s     r   r!  r!    s%     !SC771a=r   zkeras._legacy.backend.to_densec                 Z    t        |       rt        j                  j                  |       S | S r   )r   r	   r:  r   )r  s    r   r   r     s&     yy!!&))r   zkeras._legacy.backend.transposec                 ,    t        j                  |       S r   r   r   s    r   rC   rC     s     <<?r   z&keras._legacy.backend.truncated_normalc                     |t        j                         }|t        j                  j	                  d      }t
        j                  j                  | ||||      S )r   r[  r  )r   r   rn   r^  r_  r	   truncated_normalr  s        r   r/  r/    sU     } |yy  &99%%tV5t &  r   zkeras._legacy.backend.updatec                 V    t         j                  j                  j                  | |      S r   )r	   r   r   rp   )r   new_xs     r   updater2    s     99<<q%((r   z keras._legacy.backend.update_addc                 V    t         j                  j                  j                  | |      S r   )r	   r   r   
assign_add)r   	increments     r   
update_addr6         99<<""1i00r   z keras._legacy.backend.update_subc                 V    t         j                  j                  j                  | |      S r   )r	   r   r   r  )r   	decrements     r   
update_subr:    r7  r   zkeras._legacy.backend.varc                     | j                   j                  t        j                  k(  r(t        j                  | t        j                               } t        j                  j                  | ||      S r  )	r,   rc  r	   r   r   r   r   r   reduce_variancer   s      r   rx   rx     sM     	wwRWW$GGAw~~'(77""14("CCr   zkeras._legacy.backend.variablec                    |t        j                         }t        | d      r| j                         }t	        j
                  t	        j                  |j                  d      t	        j                  |j                  d      fd      }t        j                  ||j                  |j                        }|j                  |_        |S t        j                  | t        j                  |      ||      }|S )r   tocoor1   )r/  r8  dense_shape)r,   r&   
constraint)r   r   hasattrr>  rn   r   rB   rowcolr	   r   datar<   _keras_shaper   rr  )rr   r,   r&   r@  
sparse_coor/  r  s          r   rs  rs    s     } ug[[]
..z~~q1z~~q1 
 OO??"((

 $))
R[['dz	A Hr   zkeras._legacy.backend.zerosc                 T   t        j                         5  |t        j                         }t        j                  |      }t        j
                  | ||      }t        |j                  j                               rt        |||      cddd       S |cddd       S # 1 sw Y   yxY wr  )
r	   r  r   r   rr  r  r   r<   r   rs  r  s        r   r  r    s     
 =NN$E;;u%HH5t<!''//#$AU6    r  z keras._legacy.backend.zeros_likec                 2    t        j                  | ||      S r  r  r  s      r   r  r    s     ==%d33r   )NF)r:   )Nr1   r'   r3   )r:   gMbP?)F)F      ?       @F)Fr:   )rI  rJ  Fr:   )NNN)r1   r   Nr1   )r   r   Nr   )r1   r1   r1   r   NrK  )Td   r1   )r   )NN)r   )r   r   Nr  )rK  r   Nr  )r  NN)r  r   NN)r  Nr  )r*  )FNNFNFFT)Fr:   N))r   r   N))r   r   r   N)r   )__doc__r  rf   rn   	keras.srcr   keras.src.api_exportr   keras.src.utils.module_utilsr   r	   r   rA   r   r   r
   r   r!   r#   ra   rd   rh   rs   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  rC  rF  rH  rL  rY  r`  r,   re  ri  rm  ro  rB   rt  ry  r|  r  r  rl  r  r  r  r  r  r  r   r  r  r  r   r  r  r  rw   r  r  r  r  r   r  r  r  r  r  r  r  r   rc   r  r  r  r  r  rE   r  r  r!  rD  rG  r#  r  r  r  r  r<   r   r  r  r   r  r  r   r  r  r  r
  rH   rD   r  r  r  r'  r)  r   r!  r   rC   r/  r2  r6  r:  rx   rs  r  r  r   r   r   <module>rQ     s   )    - 9		 )* +
 )*, +, )*, +, ,- .
 ,- .
 ,- . /0^ 1^B 34 5 56( 7(
 56 7 9:I ;I
 ./# 0#2 9: ;& ?@  

 A> *+ ,
 451 61 >?> @>. DE 
	# F#L *+5 ,5 12? 3?" ./C 0C ,-KL .> ,-  .: 67
 A 8AH ,-  .: )* +
 23& 4&
 45 6( ?@% A%P 01% 2%6 ,-# .#
 -.) /)
 67  8D )* +> -.L /L +,# -#
 )*1 +1 +, -
 *+" ,"
 )* +
 12# 3#
 )*? +? -. /
 +,M -M
 +,M -M
 ,-3 .3
 /0 1 /0 1 -. /
 34" 5"
 23 4 ./? 0?
 /0 1 /0/ 1/ 230 40
 *+ ,
 01 2
 )* +
 ,-B .B
 )*, +,
 -. /
 *+- ,- )*, +,
 -. /
 ;<6 =6 01 2
 *+ ,
 /0 1
 -.; /;
 *+	 ,	 /03 13
 89) :)
 ,- ( .(V ,- $ .$N )* +
 *+- ,-
 67
 8
 34 5 <=483 >3  45 6 =>3 ?3 -.  / 
 *+% ,%P ,- . 56" 7"J 34?H+ 5+\ 45@ 6@  -. / )*
 	T, +T,n +, -
 67
 % 8%P /0 1 +, -
 -. / *+ ,
 )* +
 -. /( ./ 0
 ./ 0
 EF=AE GEP 89( :(" 89( :(< *+ , ,- .
 -.! /!
 +," -"
 )*? +? 34' 5' )*, +,
 ,-4 .4n *+ ,
 67( 8( *+ , ./ 0 /0 1
 67 8 ,-) .)
 011 21
 011 21
 )*D +D ./ 04 +,	 -	 014 24r   