
    &Vfa                       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d0            Z ed1          d2             Z ed3          dd4            Z  ed5          dd6            Z!d7 Z"dd8Z#d9 Z$d: Z% ed;          	 dd=            Z& ed>          	 	 	 	 dd@            Z' edA          	 	 	 	 ddB            Z( edC          	 	 	 	 ddE            Z) edF          dG             Z* edH          dI             Z+ edJ          dK             Z, edL          dM             Z- edN          ddQ            Z. edR          d dS            Z/ edT          d dU            Z0 edV          	 	 	 	 ddW            Z1 edX          dY             Z2 edZ          d!d[            Z3 ed\          d]             Z4 ed^          d"d`            Z5 eda          db             Z6 edc          dd             Z7 ede          df             Z8 edg          ddh            Z9 edi          d!dj            Z: edk          dl             Z; edm          d!dn            Z< edo          d!dp            Z= edq          dr             Z> eds          dt             Z? edu          dv             Z@ edw          dx             ZA edy          dz             ZB ed{          d|             ZC ed}          d~             ZD ed          d             ZE ed          d             ZF ed          dd            ZG ed          d             ZH ed          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            ZdS (.  z#Legacy Keras 1/2 backend functions.    N)backend)keras_export)
tensorflowzkeras._legacy.backend.absc                 *    t          j        |           S DEPRECATED.)tfabsxs    U/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/legacy/backend.pyr
   r
           6!99    zkeras._legacy.backend.allFc                 l    t          j        | t           j                  } t          j        | ||          S r   )r	   castbool
reduce_allr   axiskeepdimss      r   allr      +     	27A=D(+++r   zkeras._legacy.backend.anyc                 l    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   #        9Qr   zkeras._legacy.backend.argminc                 ,    t          j        | |          S r   )r	   argminr   s     r   r"   r"   )   r    r   zkeras._legacy.backend.arange   int32c                     || dk     rd} t          j        | ||d          }|dk    rt          j        ||          }|S )r   Nr   arange)limitdeltanamer$   )r	   ranger   )startstopstepdtyperesults        r   r&   r&   /   sO     |		Xe4t(CCCF''Mr   zkeras._legacy.backend.batch_dotc                 *	   | j         }|j         }t          |          }t          |          }|dk     s|dk     r5t          dt          |          z   dz   t          |          z   dz             |d         }|d         }|=|;||k    r5t          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          |\  }	}
||	         }||
         }|c|a||k    r[t          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
  k    rZt          t          |                    }t          |	|dz
            D ]}||dz            ||<   |	|d<   t          j        | |          } |
dk    rXt          t          |                    }t          |
dd          D ]}||dz
           ||<   |
|d<   t          j        ||          }|dk    rYt          j         |           }|dd         }t          j        |d         d|d         g          }t          j        | |          } d}nd}|dk    rYt          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          }n|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 r#   c              3   N   K   | ] }t          |t          t          f          V  !d S N)
isinstancelisttuple).0as     r   	<genexpr>zbatch_dot.<locals>.<genexpr>e   s0      99qjT5M**999999r   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).r      TF)shapelen
ValueErrorstrr5   intpy_anyr6   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    gGgG\\F\\FzzVaZZ. 'll 	
 'll 
 
 	
 1:L1:LL$<<''2 g,, 	
 g,,    $ d||Q;;QJ
+DDQJ
+D99D99999 
 $ii
 
 	
 ::D Aw{{Q6Aw{{Q6 	Dyy/
 
 	
 FB	B	B	~".R2XX;'ll 'll 	
 $ii 9AwQR())	
 	
 		
 KK {{N1a  
a!{{N1a  ! 
VaZuV}}%%r6A:&& 	( 	(A QGAJJLG$$ 
QwwuV}}%%r1b!! 	( 	(A QGAJJ
LG$$ zz(1++QrT]
8WQZWR[$ABBJq*++


zz(1++qrr{8WQZR$@AAJq*++


Yq!__F 8F##LJ y"1"z<+<=q
 
 
 y,ss"3\!BAFF
 2FL11 aFA&&			FB''Mr   z#keras._legacy.backend.batch_flattenc                     t          j        | t          j        dt          t          j        |           dd                   g                    } | S )r   r   r#   N)r	   rE   rD   prodr<   r   s    r   batch_flattenrd      sA     	
1bhD!QRR$9$9:;;<<AHr   z%keras._legacy.backend.batch_get_valuec                     d | D             S )r   c                 6    g | ]}|                                 S  )numpyr8   r   s     r   
<listcomp>z#batch_get_value.<locals>.<listcomp>   s     '''!AGGII'''r   rg   )tensorss    r   batch_get_valuerl      s     ('w''''r   z%keras._legacy.backend.batch_set_valuec                     t          j                    st          j                    r=| D ]<\  }}t          j        ||j        j                  }|                    |           ;dS dS r   r.   N)r	   executing_eagerlyinside_functionnpasarrayr.   r)   assign)tuplesr   values      r   batch_set_valuerw      su     
 !3!5!5  	 	HAuJuAGL999EHHUOOOO 	 	r   z)keras._legacy.backend.batch_normalizationMbP?c                 J    t           j                            | |||||          S r   )r	   nnbatch_normalization)r   meanvarbetagammar   epsilons          r   r{   r{      s$     5$$Qc4HHHr   zkeras._legacy.backend.bias_addc                    |t          j                    }|dvrt          d|           |j        }t	          |          dk    rVt	          |          t          |           dz
  k    r3t          dt	          |           dt          |           dz
   d          t	          |          dk    rJ|dk    r"t          j                            | |d	
          S t          j                            | |d
          S t          |           dv rD|dk    r(d|d         f|dd         z   }| t          ||          z   S | t          |d|z             z   S t          j                            | |          S )r   N   channels_lastchannels_firstUnknown data_format: r#   zUnexpected bias dimensions z. Expected it to be 1 or z dimensionsr   NCHW)data_formatNHWC)r;         r   r#   )
r   image_data_formatr>   r<   r=   ndimr	   rz   bias_addrE   )r   biasr   
bias_shapebias_reshape_axiss        r   r   r      s    /11===>>>???J
:!J477Q; > >?#j// ? ?&*1ggk? ? ?
 
 	

 :!***5>>!Tv>>>>u~~a6~:::Aww)***!"JrN 3j"o Ewt%6777774
!233335>>!T"""r   z)keras._legacy.backend.binary_crossentropyc                    t          j        |           } t          j        |          }|r!t           j                            | |          S t          j        t	          j                    |j                  }t          j        ||d|z
            }| t           j        	                    |t	          j                    z             z  }|d| z
  t           j        	                    d|z
  t	          j                    z             z  z  }| S )r   labelslogits      ?r#   )
r	   convert_to_tensorrz   !sigmoid_cross_entropy_with_logitsr   r   r.   clip_by_valuemathlog)targetoutputfrom_logitsepsilon_bces        r   binary_crossentropyr     s     !&))F!&))F 
u66& 7 
 
 	
 #GO$5$5v|DDHfhh??F 27;;v(9(99::
:CAJ"'++a&j7?3D3D&DEEEEC4Kr   z/keras._legacy.backend.binary_focal_crossentropy      ?       @c                     |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   r#   r   )r   r   r   )r	   sigmoidpowr   )r   r   apply_class_balancingalphar   r   	sigmoidalp_tfocal_factorr   	focal_bceweights               r   binary_focal_crossentropyr   &  s     '2=
6"""vI
9
F
q9}=
=C 6#)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     71e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   ro   )
r5   r	   TensorVariableSparseTensorr   r   floatxrr   rs   r   s    r   cast_to_floatxr   L  s]     !bibo>?? 2wq 0 01111:aw~//0000r   z.keras._legacy.backend.categorical_crossentropyc                    t          j        |           } t          j        |          }| j                            |j                   |r"t           j                            | ||          S |t          j        ||d          z  }t          j        t          j                    |j	                  }t          j
        ||d|z
            }t          j        | t           j                            |          z  |           S )r   )r   r   r   Tr   )r	   r   r<   assert_is_compatible_withrz   !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
L**6<888 
u66&t 7 
 
 	
 bmFD$777F #GO$5$5v|DDHfhh??FM&27;;v#6#66====r   z4keras._legacy.backend.categorical_focal_crossentropyc                    t          j        |           } t          j        |          }| j                            |j                   |r!t           j                            ||          }|t          j        ||d          z  }t          j        t          j                    |j	                  }t          j
        ||d|z
            }|  t           j                            |          z  }t          j        d|z
  |          }t          j        ||          }	t          j        |	|          }
t          j        |
|          }
|
S )r   r   Tr   r   r   )r	   r   r<   r   rz   softmaxr   r   r   r.   r   r   r   r   multiply)r   r   r   r   r   r   r   ccemodulating_factorweighting_factor	focal_cces              r   categorical_focal_crossentropyr   l  s!    !&))F!&))F
L**6<888 2vD11 bmFEEEEF#GO$5$5v|DDHfhh??F 'BGKK''
'C sV|U33{#4e<< ,c22Iid33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   )r5   r@   floatrr   infr	   r   )r   	min_value	max_values      r   clipr     sw     )c5\** "zC<0 0 " y  !IVG	F	Ay)444r   z!keras._legacy.backend.concatenatec                 b   |dk     rt          | d                   }|r||z  }nd}t          d | D                       r%t          j        j                            ||           S t          d | D                       rt          j        | |          S t          j        d | D             |          S )r   r   c              3   4   K   | ]}t          |          V  d S r4   )	is_sparseri   s     r   r:   zconcatenate.<locals>.<genexpr>  s(      ,,qill,,,,,,r   c              3   J   K   | ]}t          |t          j                  V  d S r4   )r5   r	   RaggedTensorri   s     r   r:   zconcatenate.<locals>.<genexpr>  s.      @@1
1bo..@@@@@@r   c                 ,    g | ]}t          |          S rg   )to_denseri   s     r   rj   zconcatenate.<locals>.<listcomp>  s    777!(1++777r   )r   py_allr	   compatv1sparse_concatrG   )rk   r   ranks      r   concatenater     s     axxGAJ 	DLDDD,,G,,,,, ?y|))$888	@@@@@	@	@ ?y$'''y77w777>>>r   zkeras._legacy.backend.constantc                 \    |t          j                    }t          j        | |||          S )r   N)r.   r<   r)   )r   r   r	   constant)rv   r.   r<   r)   s       r   r   r     s/     }  ;uETBBBBr   c                     d}|dk    rd}| |fS )NNWCr   NCWrg   r   r   tf_data_formats      r   _preprocess_conv1d_inputr     s#    N&&&nr   c                 N    d}|dk    r|rt          j        | d          } nd}| |fS )Nr   r   r   r1   r;   r#   r   r	   rC   )r   r   force_transposer   s       r   _preprocess_conv2d_inputr     s>    N&&& 	$Q--AA#Nnr   c                     d}|dk    rd}| |fS )NNDHWCr   NCDHWrg   r   s      r   _preprocess_conv3d_inputr     s#    N&&& nr   c                 N    | dk    rd} n| dk    rd} nt          d|            | S )NsameSAMEvalidVALIDzInvalid padding: )r>   )paddings    r   _preprocess_paddingr     sB    &	G		6W66777Nr   zkeras._legacy.backend.conv1dr   c                    |t          j                    }|dvrt          d|           |j                                        }|dk    r"||d         dz
  z  }t          | |df          } d}t          |          }t          | |          \  } }t          j	        j
        j                            | |||||          } |d	k    r|d
k    rt          j        | d          } | S )r   Nr   r   causalr   r#   r   inputfilterdilation_ratestridesr   r   r   r   )r   r1   r#   )r   r   r>   r<   as_listtemporal_paddingr   r   r	   r   r   rz   convolutionrC   )	r   kernelr   r   r   r   kernel_shapeleft_padr   s	            r   conv1dr     s   
 /11===>>>???<''))L( LOa$78Q1..!'**G0K@@A~
	###" 	$ 	 	A &&&>U+B+BLI&&Hr   zkeras._legacy.backend.conv2dr#   r#   c                 @   |t          j                    }|dvrt          d|           t          | |          \  } }t	          |          }t
          j        j        j        	                    | |||||          } |dk    r|dk    rt          j
        | d          } | S )r   Nr   r   r   r   r   r   r;   r#   r1   )r   r   r>   r   r   r	   r   r   rz   r   rC   r   r   r   r   r   r   r   s          r   conv2dr    s     /11===>>>???0K@@A~!'**G
	###" 	$ 	 	A &&&>V+C+CLL))Hr   z&keras._legacy.backend.conv2d_transposec                 z   |t          j                    }|dvrt          d|           |dk    r	|dk    rd}nd}t          | ||          \  } }|dk    r$|dk    r|d	         |d
         |d         |d         f}|d	         3t	          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    r0t          j        j        j                            | |||||          } nN|d	         |d         k    rt          d|           t          j                            | |||d	         |          } |dk    r|dk    rt	          j        | d          } | S )r   Nr   r   r   r   TFr   r   r1   r;   r#   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<   r7   r5   r6   rD   r   r   r   rz   conv2d_transposeatrous_conv2d_transposerC   )	r   r   r_   r   r   r   r   r   r   s	            r   r  r    s     /11===>>>??? &&&=F+B+B0	; A~ &&&>V+C+COOOO	
 AA(5abb1A+B+BB,.. 4x\ 2 233!'**G.4'7"ILO,,& - 
 
 }Q///;+8; ;  
 E))v|-*:G * 
 
 &&&>V+C+CLL))Hr   zkeras._legacy.backend.conv3dr#   r#   r#   c                 @   |t          j                    }|dvrt          d|           t          | |          \  } }t	          |          }t
          j        j        j        	                    | |||||          } |dk    r|dk    rt          j
        | d          } | S )r   Nr   r   r   r   r   r   r   r#   r1   r;   )r   r   r>   r   r   r	   r   r   rz   r   rC   r  s          r   conv3dr  b  s     /11===>>>???0K@@A~!'**G
	###" 	$ 	 	A &&&>W+D+DL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                 X    t          j        | j                                                  S r   )rr   rc   r<   r   r   s    r   count_paramsr    s      717??$$%%%r   z$keras._legacy.backend.ctc_batch_costc                 8   t          j        t          j        |d          t           j                  }t          j        t          j        |d          t           j                  }t          j        t	          | |          t           j                  }t           j                            t          j        |g d          t          j	                    z             }t          j
        t           j        j        j                            |||          d          S )r   r   r   r#   r   r1   perm)inputsr   sequence_lengthr#   )r	   r   rH   r$   ctc_label_dense_to_sparser   r   rC   r   r   rB   r   r   rz   ctc_loss)y_truey_predinput_lengthlabel_lengthsparse_labelss        r   ctc_batch_costr    s     72:l<<<bhGGL72:l<<<bhGGLG!&,77 M W[[
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                            |||d          }|dddddf         }t          j	        t          j
        t          j        d|d                   |          |          }t           j        j                            ||          }t          j        t          j	        t          j
        t          j        d|d                             t          |d                              }	t           j        j                            |	|          }
t          j        t          j	        t          |
|gd          ddg                    }t           j        j                            | |          }t          j        t          j        |t           j                  |t          j        |t           j                            S )	r   r   r#   c                     t          j        t          j        t          j        |           d                   d          t          j        |          k     S )Nr#   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  sJ    ~bhrx	':':1'=>>BBRWF
 F
 
 	
r   )initializerparallel_iterationsNr   r1   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hA/00O;q>"233
 
 
 
 

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

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

;	95A>>>BHH G ),((99K?
""Kbh1O1O  r   z keras._legacy.backend.ctc_decodeTd   c                    t          j        |           }|d         |d         }}t           j                            t          j        | g d          t          j                    z             } t          j        |t           j                  }|r%t           j	        
                    | |          \  }}	n0t           j        j        j	                            | |||          \  }}	g }
|D ]X}t          j        |j        |j        ||f          }|
                    t           j                            |d                     Y|
|	fS )	r   r   r#   r  r  )r  r  )r  r  
beam_width	top_pathsr   )sp_inputdefault_value)r	   r<   r   r   rC   r   r   r   r$   rz   ctc_greedy_decoderr   r   ctc_beam_search_decoderr   r6  valuesappendsparser   )r  r  greedyr:  r;  input_shapenum_samples	num_stepsdecodedlog_probdecoded_densests               r   
ctc_decoderK    s@    (6""K(^[^KW[[
V))),,,w/@/@@ F 7<22L 

 e66< 7 
 
(( !iloEE(!	 F 
 
( M P P_RZ[)4LMMRY//2/NNOOOO8$$r   zkeras._legacy.backend.cumsumc                 .    t          j        | |          S r   r   )r	   cumsumr   s     r   rN  rN    s     9QT""""r   zkeras._legacy.backend.cumprodc                 D    t           j                            | |          S rM  )r	   r   cumprodr   s     r   rP  rP    s     7??14?(((r   z&keras._legacy.backend.depthwise_conv2dc                 T   |t          j                    }|dvrt          d|           t          | |          \  } }t	          |          }|dk    r	d|z   dz   }nd|z   }t
          j                            | |||||          } |dk    r|dk    rt          j        | d	          } | S )
r   Nr   r   r   r   r   r   r   	dilationsr   r   r   )	r   r   r>   r   r   r	   rz   depthwise_conv2drC   )r   depthwise_kernelr   r   r   r   r   s          r   rT  rT    s     /11===>>>???0K@@A~!'**G.4'7"
	" 	 	 	A &&&>V+C+CLL))Hr   zkeras._legacy.backend.dotc                    t          |           t          |           dk    st          |          dk    rg }t          | j        t          j        t          j        |                               D ]2\  }}||                    |           |                    |           3t          |          }g }t          |j        t          j        t          j        |                              D ]2\  }}||                    |           |                    |           3t          |          }t          t          t          |                              }|	                    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                            | |          }	nt          j        | |          }	|	S )r   Nr1   r   r  )r   zipr<   r	   unstackrA  r7   r6   r*   poprE   rC   rF   r   rB  sparse_dense_matmul)
r   rI   rK   rX   srL   y_permute_dimxtytouts
             r   dotra    s    AwwQ!tAww{{BHQKK!8!899 	" 	"DAq}q!!!!q!!!!..BHQKK!8!899 	" 	"DAq}q!!!!q!!!!..U477^^,,&**2../-?ZB,--ZQ];;;gbk2=NOOzIb"wss|gcrcl:WRSS\I
 
 	
 || i++Aq11i1ooJr   zkeras._legacy.backend.dropoutc                     |t           j                            d          }t          j                            | |||          S )r   N    cA)r  noise_shapeseed)rr   randomrandintr	   rz   dropout)r   levelrd  re  s       r   rh  rh  5  s:     |y  &&5==Kd=KKKr   zkeras._legacy.backend.dtypec                 $    | j         j        j        S r   )r.   
base_dtyper)   r   s    r   r.   r.   =  s     7""r   zkeras._legacy.backend.elur   c                     t           j                            |           }|dk    r|S t          j        | dk    |||z            S )r   r#   r   )r	   rz   eluwhere)r   r   ress      r   rm  rm  C  s?     %))A,,Czz
xAsECK000r   zkeras._legacy.backend.equalc                 ,    t          j        | |          S r   )r	   equalr   rI   s     r   rq  rq  M  s     8Aq>>r   zkeras._legacy.backend.evalc                 :    t          t          |                     S r   )	get_valuer   r   s    r   evalru  S  s     Xa[[!!!r   zkeras._legacy.backend.expc                 *    t          j        |           S r   )r	   expr   s    r   rw  rw  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   Nro   )r   r   r	   as_dtypevariableeye)sizer.   r)   tf_dtypes       r   r|  r|  e  sF     }  {5!!HBF4x000%>>>r   zkeras._legacy.backend.flattenc                 .    t          j        | dg          S )r   r   r	   rE   r   s    r   flattenr  n  s     :a"r   zkeras._legacy.backend.foldlc                 R    t           j        j                            | |||          S r   )r%  r)   )r	   r   r   foldlfnelemsr%  r)   s       r   r  r  t  %     9<b%[tLLLr   zkeras._legacy.backend.foldrc                 R    t           j        j                            | |||          S r  )r	   r   r   foldrr  s       r   r  r  z  r  r   zkeras._legacy.backend.gatherc                 L    t           j        j                            | |          S r   )r	   r   r   gather)	referencer6  s     r   r  r    s     9<y'222r   zkeras._legacy.backend.get_valuec                    t          j        |           s| S t          j                    st          | t           j        j                  r|                                 S t          | dd          sOt           j        j        	                                5  |                                 cddd           S # 1 swxY w Y   t          j
                    5  |                                 cddd           S # 1 swxY w Y   dS )r   _in_graph_modeTN)r	   	is_tensorrp   r5   __internal__EagerTensorrh   getattreager_context
eager_mode
init_scoper   s    r   rt  rt    s\    <?? 	 Ar/J!K!K wwyy1&--  _*5577 	 	7799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		  wwyy                 s$   B22B69B6C11C58C5zkeras._legacy.backend.gradientsc                 P    t           j        j                            | |d          S )r   T)colocate_gradients_with_ops)r	   r   r   	gradients)loss	variabless     r   r  r    s,     9<!!iT "   r   zkeras._legacy.backend.greaterc                 ,    t          j        | |          S r   r	   greaterrr  s     r   r  r         :ar   z#keras._legacy.backend.greater_equalc                 ,    t          j        | |          S r   )r	   greater_equalrr  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?ro   g      ?        r   )r	   r   r.   r   addr   )r   	point_two
point_fives      r   hard_sigmoidr    sm     $S888I%c999J
Ay!!A
q*A
C%%AHr   zkeras._legacy.backend.in_top_kc                 X    t           j        j        j                            | ||          S r   )r	   r   r   r   in_top_k)predictionstargetsks      r   r  r    s#     9<%%k7A>>>r   zkeras._legacy.backend.int_shapec                     	 | j         }t          |t                    s!t          |                                          }|S # t          $ r Y dS w xY w)r   N)r<   r5   r7   r   r>   r   r<   s     r   	int_shaper    s\    %'' 	+%--//**E   tts   >A 
AAzkeras._legacy.backend.is_sparsec                     t          | dd          }|t          |t          j                  S t          | t          j                  S )r   
_type_specN)r  r5   r	   SparseTensorSpecr   )tensorspecs     r   r   r     s@     6<..D$ 3444fbo...r   z"keras._legacy.backend.l2_normalizec                 D    t           j                            | |          S rM  )r	   linalgl2_normalizer   s     r   r  r    s     9!!!$!///r   zkeras._legacy.backend.lessc                 ,    t          j        | |          S r   r	   lessrr  s     r   r  r    s     71a==r   z keras._legacy.backend.less_equalc                 ,    t          j        | |          S r   )r	   
less_equalrr  s     r   r  r    s     =Ar   zkeras._legacy.backend.logc                 @    t           j                            |           S r   )r	   r   r   r   s    r   r   r     s     7;;q>>r   zkeras._legacy.backend.map_fnc                 R    t           j        j                            | |||          S )r   )r)   r.   )r	   r   r   map_fn)r  r  r)   r.   s       r   r  r    s%     9<r5t5AAAr   zkeras._legacy.backend.maxc                 .    t          j        | ||          S r   )r	   
reduce_maxr   s      r   maxr         =D(+++r   zkeras._legacy.backend.maximumc                 ,    t          j        | |          S r   )r	   maximumrr  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.   rk  r	   r   r   r   r   reduce_meanr   s      r   r|   r|     sC     	wRW$$GAw~''((>!T8,,,r   zkeras._legacy.backend.minc                 .    t          j        | ||          S r   )r	   
reduce_minr   s      r   minr    r  r   zkeras._legacy.backend.minimumc                 ,    t          j        | |          S r   )r	   minimumrr  s     r   r  r    r  r   z+keras._legacy.backend.moving_average_updatec                     t          j        || j                  }t          j        || j                  }|                     | |z
  d|z
  z            S )r   r#   )r	   r   r.   
assign_sub)r   rv   momentums      r   moving_average_updater    sI     wx))HGE17##E<<Uq8|45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     7<r   zkeras._legacy.backend.not_equalc                 ,    t          j        | |          S r   )r	   	not_equalrr  s     r   r  r  "  s     <1r   zkeras._legacy.backend.one_hotc                 0    t          j        | |d          S )r   r   )depthr   )r	   one_hot)r6  num_classess     r   r  r  (  s     :g[r::::r   zkeras._legacy.backend.onesc                 h   t          j                    5  |t          j                    }t          j        |          }t          j        | ||          }t          |j                                                  rt          |||          cddd           S |cddd           S # 1 swxY w Y   dS r   N)r<   r.   r)   r.   r)   )
r	   r  r   r   rz  onesr   r<   r   r{  r<   r.   r)   r~  vs        r   r  r  .  s    
  =N$$E;u%%G%xd;;;!'//##$$ 	7AU666                            A8B'B''B+.B+zkeras._legacy.backend.ones_likec                 0    t          j        | ||          S r   r  )r	   	ones_liker   r.   r)   s      r   r  r  ;  s     <T2222r   z(keras._legacy.backend.permute_dimensionsc                 .    t          j        | |          S )r   r  r   )r   rW   s     r   permute_dimensionsr  A  s     <((((r   zkeras._legacy.backend.pool2dr  c                    |t          j                    }|dvrt          d|           t          |          dk    rt          d          t          |          dk    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        j	        
                    | ||||          } nT|dk    r/t          j        j        j	                            | ||||          } nt          dt          |          z             |dk    r|dk    rt          j        | d          } | S )r   Nr   r   r1   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   rz   max_poolavg_poolr?   rC   r   	pool_sizer   r   r   	pool_moder   s          r   pool2dr  G  s    /11===>>>???
9~~EFFF
7||qCDDD0K@@A~!'**G.4'9$t+		7"Y&	EILO$$y'7 % 
 
 
e		ILO$$y'7 % 
 
 1C	NNBCCC&&&>V+C+CL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                            | ||||          } nJ|d	k    r%t
          j                            | ||||          } nt          d
t          |          z             |dk    r|dk    rt          j
        | d          } | S )r   Nr   r   r   r   r   r  r  r  r  r   r
  )r   r   r>   r   r   r	   rz   
max_pool3d
avg_pool3dr?   rC   r  s          r   pool3dr  s  sL    /11===>>>???0K@@A~!'**G  .4'9$t+		7"Y&	EEy'7  
 
 
e		Ey'7  
 
 1C	NNBCCC&&&>W+D+DLO,,Hr   zkeras._legacy.backend.powc                 ,    t          j        | |          S r   )r	   r   )r   r9   s     r   r   r     s     6!Q<<r   zkeras._legacy.backend.prodc                 .    t          j        | ||          S r   )r	   reduce_prodr   s      r   rc   rc     s     >!T8,,,r   z&keras._legacy.backend.random_bernoullir  c                 2   |t          j                    }|t          j                            d          }t          j        t
          j                            | ||          |k    t          j        | |          t          j	        | |                    S )r   Nrc  r.   re  ro   )
r   r   rr   rf  rg  r	   rn  uniformr  zeros)r<   pr.   re  s       r   random_bernoullir    s     }  |y  &&8
	%u488A=
U###
e$$$  r   z#keras._legacy.backend.random_normalc                     |t          j                    }|t          j                            d          }t
          j                            | ||||          S )r   Nrc  )r|   stddevr.   re  )r   r   rr   rf  rg  r	   normalr<   r|   r  r.   re  s        r   random_normalr    sZ     }  |y  &&9Du4    r   z,keras._legacy.backend.random_normal_variablec                    |t          j                    }t          j        |          }|t          j                            d          }t          j        j        	                    ||||          |           }t          |||          S r   Ng    eAr  r  )r   r   r	   rz  rr   rf  rg  r   r   random_normal_initializerr{  )r<   r|   scaler.   r)   re  r~  rv   s           r   random_normal_variabler    s    
 }  {5!!H|y  &&IL22e8$ 3   E ET2222r   z$keras._legacy.backend.random_uniformc                     |t          j                    }|t          j                            d          }t
          j                            | ||||          S )r   Nrc  )minvalmaxvalr.   re  )r   r   rr   rf  rg  r	   r  )r<   r	  r
  r.   re  s        r   random_uniformr    sZ     }  |y  &&9fV5t    r   z-keras._legacy.backend.random_uniform_variablec                    |t          j                    }t          j        |          }|t          j                            d          }t          j        j        	                    ||||          |           }t          |||          S r  )r   r   r	   rz  rr   rf  rg  r   r   random_uniform_initializerr{  )r<   lowhighr.   r)   re  r~  rv   s           r   random_uniform_variabler    s     }  {5!!H|y  &&IL33T 4   E ET2222r   zkeras._legacy.backend.reshapec                 ,    t          j        | |          S r   r  r  s     r   rE   rE     s     :ar   zkeras._legacy.backend.reluc                 &   t          | dt          j                              }|dk    rs|'|dk    r!t          j                            | |          S |dk    r$t          j                            |  |z             }n t          j                            |            }|du}|dk    r-| t          j        t          j        | |          |          z  } nG|dk    r"t          j        	                    |           } d}nt          j                            |           } |rLt          j
        || j                  }t          j
        d| j                  }t          j        | ||          } |dk    r#t          j
        || j                  }| ||z  z  } | S )	r   r.   r  Nr   )r   ro      F)r  r   r   r	   rz   
leaky_relurelur   r  relu6r   r.   r   )r   r   r   	thresholdr.   negative_partclip_maxzeros           r   r  r    sp    Aw 0 011E||a5##AU#333>>EJJrI~66MMEJJrNNM$HA~~
1i00>>>>	aEKKNNEJJqMM 1(!'BBB	#AQW555Qi0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   r1   r#   )r   r	   rB   rD   r(  )r   nrW   s      r   repeatr    sO     77a<<<<
q!Ah1ay!!G71gr   z%keras._legacy.backend.repeat_elementsc                    | j                                         }||         ;t          j        | ||         |          }fd|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                                         }|                    |           |S )r   N)rv   num_or_size_splitsr   c                 8    g | ]}t                    D ]}|S rg   )r*   )r8   r\  _reps      r   rj   z#repeat_elements.<locals>.<listcomp>,  s,    777qE#JJ77q7777r   r#   r   r$   ro   )r<   r   r	   splitr   rB   rr   r  r=   r(  deleter   rE   	set_shape)r   r"  r   rK   splitsx_repauxiliary_axisrepss    `      r   repeat_elementsr*  #  s:    gooGt} gdm$OOO7777F7775$''' AXNhqkkGN1>222E73qw<<!#$$DDGE4  E 9T>**DDJ;t7+++DtOGJug&&E gooG	OOGLr   z#keras._legacy.backend.resize_imagesnearestc           	      &   |dk    rd\  }}n|dk    rd\  }}nt          d|           | j        ||dz            }|                                r)t          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                    |                                          z   dz   }	||v r)t          j	                            | |||                   } nt          d|	 d| d          |dk    rt          | g d          } | S )r   r   )r1   r;   r   )r#   r1   z Invalid `data_format` argument: r#   r$   ro   r   )areabicubicbilineargaussianlanczos3lanczos5mitchellcubicr+  "z", ")methodz+`interpolation` argument should be one of: z. Received: "z".r   )r>   r<   is_fully_definedr	   r   r   rr   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_imagesrM  I  s   
 &&&
dd		'	'
ddIKIIJJJtax(I!!## 1K	 1 1 3 37CCC		HQKKtax0	
-.g>>>  I &&&q,,,//%*8(0H)2H)2H)2H)2.<8(9	 	N N,?,?,A,A B BBSH&&HOOAy1NOOOC"C C1>C C C
 
 	
 &&&q,,,//Hr   z$keras._legacy.backend.resize_volumesc                    |dk    r8t          | |d          }t          ||d          }t          ||d          }|S |dk    r8t          | |d          }t          ||d          }t          ||d          }|S t          d|           )	r   r   r1   r   r;   r   r   r#   zInvalid data_format: )r*  r>   )r   depth_factorrE  rF  r   r   s         r   resize_volumesrP  x  s     &&& Lq999 Q??? A>>>		'	' Lq999 Q??? A>>>>>>???r   zkeras._legacy.backend.reversec                 \    t          |t                    r|g}t          j        | |          S r   )r5   r@   r	   r*  )r   rJ   s     r   r*  r*    s/     $ v:ar   zkeras._legacy.backend.rnnc           	         	
*+,-./0123456 t           j        j                                        sd
d }|s t           j                            |          t           j                                      }|d         j        d         5|d         j        d         +t          j        |d                   d         6|D ]}|j                            d           |h|j	        t           j
        k    rt          j        |t           j
                  }t          |j                  dk    rt          |          }|s ||          }g d)d*|r95st          d	          t                    }g }g }fd
}t           j                                      r!t           j                            |          3n |          f33fd}|t          j        |          }r|                                 t'          5          D ]T} ||          }||         /  |t          |          t                    z             \  }} */|          }|st)          |          }n|d         }t          j        |||          }t           j                            |          }t           j                            |          }t          */fd|D                       }t          d t-          |||          D                       }t           j                            ||          }
r,|                    |           |                    |           N|g}|g}V|d         }|d         }t          j        |          }	rbt          j         *|d         |          |t)          |                    }t          j         *||d          |t)          |                    }nt'          5          D ]l} ||          }  |t          |          t                    z             \  }}
r+|                    |           |                    |           f|g}|g}m|d         }|d         }t          j        |          }nt                    }t          6fdt5          |          D                       .t          fdt-          .|          D                       .t           j                            d |D                       }  |t                    t                    z             \  } }!
r6nd2t          2fdt5          t           j                            |                     D                       }"t          j        ddd          }#6}$nt          j                  }$6fd|$ddd}%|Srt%          |d          }t          j        t           j
        6d          00                    |          00fd1*fd,n[t=          t           j                  r?r4t          j        d          }&t          j         |&dz
            44fd1nfd 1d! ,nd11rt          d" t           j                            |           D                       -,-.1
 	f	d#}'t          j!        j"        j#        d*|'|#|"-f|z   d$|%}(|(dd         }n7.
 fd%}'t          j!        j"        j#        d*|'|#|"f|z   d$|%}(|(dd         }|(d         }"t          d& |"D                       }t          d' |D                       }t           j                            | |          }t           j                            | |          }+
5fd(})t           j                            |)|          }|s t           j                            ||          }|||fS )+r   Tc                     t          t          t          | j                                      }d\  |d<   |d<   t	          j        | |          S )N)r#   r   r   r#   )r6   r*   r=   r<   r	   rC   )input_trJ   s     r   swap_batch_timestepz rnn.<locals>.swap_batch_timestep  sE    E#gm,,--..Qa|GT***r   r   r#   r;   Nr1   c                    t           j                            |           rt          d|            t           j                            |          rt          d|           t	          |j                  t	          | j                  z
  }t          |          D ]}t          j        | d          } dg|z  |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   r#   )
r	   nest	is_nestedr>   r=   r<   r*   rB   r   r(  )mask_trT  	fixed_dim	rank_diffr!  	multipless         r   _expand_maskzrnn.<locals>._expand_mask  s    7V$$ 	DFDD   7W%% 	FWFF   &&V\):)::	y!! 	0 	0A^FB//FFC)Ogm&;&;&=&=ijj&II	wvy)))r   z/Unrolling requires a fixed number of timesteps.c                 \    t          j        |           } r|                                  | S r4   )r	   rY  r*  )rT  go_backwardss    r   _process_single_input_tz$rnn.<locals>._process_single_input_t  s/    j))G "!!!Nr   c                 b      fdD             }t           j                            |          S )Nc                      g | ]
}|         S rg   rg   )r8   t_times     r   rj   z2rnn.<locals>._get_input_tensor.<locals>.<listcomp>  s    6662d8666r   )r	   rW  pack_sequence_as)rd  inpr  processed_inputs   ` r   _get_input_tensorzrnn.<locals>._get_input_tensor  s5    6666o666C7++FC888r   r   c              3   0   K   | ]} |          V  d S r4   rg   )r8   r\  r]  rY  s     r   r:   zrnn.<locals>.<genexpr>  s@       % %01LL++% % % % % %r   c              3   J   K   | ]\  }}}t          j        |||          V  d S r4   r	   rn  )r8   mr\  pss       r   r:   zrnn.<locals>.<genexpr>
  sJ       * * 1b HQ2&&* * * * * *r   rZ  c              3   \   K   | ]&\  }}t          j        |j        d |           V  'dS )	input_ta_r.   r}  tensor_array_nameN)r	   TensorArrayr.   )r8   rX   rf  time_steps_ts      r   r:   zrnn.<locals>.<genexpr>>  s_       
 
 3 Ni!"1a//  
 
 
 
 
 
r   c              3      K   | ]A\  }}s|                     |          n"|                     t          |d                     V  BdS )r   N)rY  r*  )r8   tainput_r_  s      r   r:   zrnn.<locals>.<genexpr>F  sl       
 
 F $4

6"""ZZ 2 233	
 
 
 
 
 
r   c                     g | ]
}|d          S r   rg   )r8   rf  s     r   rj   zrnn.<locals>.<listcomp>S  s    666SV666r   c              3   h   K   | ],\  }}t          j        |j        |j        d |           V  -dS )
output_ta_)r.   r}  element_shaperr  N)r	   rs  r.   r<   )r8   rX   r`  output_ta_sizes      r   r:   zrnn.<locals>.<genexpr>\  sf       
 
 3 Ni#!i"2q"2"2	  
 
 
 
 
 
r   r$   rd  r  c                     | k     S r4   rg   )rd  r!  rt  s     r   <lambda>zrnn.<locals>.<lambda>n  s    TL%8 r       )condmaximum_iterationsr&  swap_memorymask_tarq  c                 .                         |           S r4   read)rd  r  s    r   
masking_fnzrnn.<locals>.masking_fn|  s    ||D)))r   c                      t           fd|D                       }t          d t          |||          D                       S )Nc              3   X   K   | ]$} |t          j                             V  %dS )rn  N)r=   r<   )r8   or]  rY  s     r   r:   z5rnn.<locals>.compute_masked_output.<locals>.<genexpr>  sR       % % !Lc&,6G6GHHH% % % % % %r   c              3   J   K   | ]\  }}}t          j        |||          V  d S r4   rk  )r8   rl  r  fms       r   r:   z5rnn.<locals>.compute_masked_output.<locals>.<genexpr>  sJ         1b HQ2&&     r   r7   rX  )rY  flat_out	flat_masktiled_mask_tr]  s   `   r   compute_masked_outputz"rnn.<locals>.compute_masked_output  sz    $ % % % % %%% % %       $'h	$J$J     r   r   c                 .    t          j        |           S r4   r  )rd  rev_input_lengths    r   r  zrnn.<locals>.masking_fn  s    7#3T:::r   c                 .    t          j        |           S r4   r  )rd  r  s    r   r  zrnn.<locals>.masking_fn  s    :lD999r   c                 V     t           fdt          ||          D                       S )Nc              3   j   K   | ]-\  }}t           j        j                            ||          V  .d S r4   )r	   r   r   rn  )r8   r  zorY  s      r   r:   z5rnn.<locals>.compute_masked_output.<locals>.<genexpr>  sQ        B IL&&vq"55     r   r  )rY  r  r  s   `  r   r  z"rnn.<locals>.compute_masked_output  sE        #&x#;#;     r   c              3   >   K   | ]}t          j        |          V  d S r4   r	   
zeros_liker8   r  s     r   r:   zrnn.<locals>.<genexpr>  s=       % %%&a  % % % % % %r   c                   	  t           fdD                       }t          j                            |          }            } |t          |          t                    z             \  }}t          j                            |          }rnt          j                            |          }	 |||	          }
t          j                            |          }t          j                            |          }t          ||          D ]9\  }}t          |t          j                  r|                    |j	                   : |||          }t          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   B   K   | ]}|                               V  d S r4   r  r8   rv  rd  s     r   r:   z%rnn.<locals>._step.<locals>.<genexpr>  -      %G%Gbggdmm%G%G%G%G%G%Gr   r   c              3   J   K   | ]\  }}|                     |          V  d S r4   writer8   rv  r`  ta_index_to_writes      r   r:   z%rnn.<locals>._step.<locals>.<genexpr>  J       $ $C HH.44$ $ $ $ $ $r   r#   
r7   r	   rW  re  r  rX  r5   r   r%  r<   )rd  output_ta_tprev_outputstatesr"  rY  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    !&%G%G%G%Gh%G%G%G G G " 8 8 O O#D))%2]!5==53C3C#C& &"
 !goof55 ,6$$55 !
 #8"7K)9# #
  W__V44
!#!<!<(+J(G(G 9 9$E9!)RY77 9!++EK888#8#8NJ$ $   W55 0 
 -?$EDDA!# $ $ $ $#&{O#D#D$ $ $  
 q+u_/E/EFJ J  r   )body	loop_varsc                     t           fdD                       }t          j                            |          } |t          |          t                    z             \  }}t          j                            |          }t          j                            |          }t          ||          D ]9\  }}	t          |	t          j                  r|	                    |j	                   :t          j                            |          }
r ndt          fdt          ||
          D                       }t          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   B   K   | ]}|                               V  d S r4   r  r  s     r   r:   z%rnn.<locals>._step.<locals>.<genexpr>  r  r   r   c              3   J   K   | ]\  }}|                     |          V  d S r4   r  r  s      r   r:   z%rnn.<locals>._step.<locals>.<genexpr>  r  r   r#   r  )rd  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|    !&%G%G%G%Gh%G%G%G G G " 8 8 O O%2]!5==53C3C#C& &"
  W__V44
!#!<!<(+J(G(G 9 9$E9!)RY77 9!++EK888 goof55,>$EDDA!# $ $ $ $#&{K#@#@$ $ $  
  W55"N 
 q+.z1B1BBBr   c              3   >   K   | ]}|                                 V  d S r4   )rD   r  s     r   r:   zrnn.<locals>.<genexpr>  s*      55a		555555r   c              3   &   K   | ]}|d          V  dS )r   Nrg   r  s     r   r:   zrnn.<locals>.<genexpr>  s&      33aAbE333333r   c                     t          | t          j                  r@| j                                        }r|d<   nd|d<   |d<   |                     |           | S )Nr   r#   )r5   r	   r   r<   r   r%  )output_r<   batchr  
time_stepss     r   r%  zrnn.<locals>.set_shape  sh    gry)) 	%M))++E! %aaE!He$$$r   r   rg   )$r	   r  tf2enabledrW  map_structurer  r<   with_rank_at_leastr.   r   r   r=   rB   r>   r7   rX  rY  r*  r*   r  rn  rX  re  rA  rD   	enumerater   r  rs  r5   r   subtractr   r   
while_loop)7r  r  r  r_  maskr  unrollr  
time_majorr  r  rU  flatted_inputsrw  r  successive_statessuccessive_outputsr`  rh  	mask_listrX   rf  r   r  r  r  flat_statesflat_new_statesflat_final_stateslast_outputoutputsinput_time_zerooutput_time_zeror!  	output_tard  max_iterationswhile_loop_kwargsmax_lenr  final_outputsr%  r]  r  r  r  r  rY  r  r  r}  rg  r  r  rt  s7   ```` ` ` ``                               @@@@@@@@@@@@@r   rnnr    sV
    ?&&(( "!+ + +  D&&':FCCW__V,,N"(+J1#A&E8N1-..q1L  + +''****:  74))Dtz??at$$D 	-&&t,,D	* * * *  N 	PNOOO~&&	 	 	 	 	 7V$$ 	A g33' OO  76v>>@O	9 	9 	9 	9 	9 	9 
4((I $!!###:&& !1 !1''**"1%2]vy)9)99& &"
  ,|FF;;) 9",V"4"4KK"4R"8K,DD goof55"$'//*"="=$ % % % % %5@% % %     %* * *$'$o{% %* * * % %! 11&:KLL% 1&--f555%,,V4444*0&)/%%,R0K*2.Jh122G# 
 h L2<<{++ 
 ( Lw!<<<w''  :&& 
1 
1''**!.vy)9)99" " & 1&--f555%,,V4444*0&)/%%,R0K*2.Jh122GG ~&&
  
 
 
 
 $N33
 
 
 
 
  
 
 
 
 "(N;;
 
 
 
 
 '2266~666
 

 ,mU>22U95E5EE
 
! *<B 
 
 
 
 $BGOO4D$E$EFF
 
 
 
 
	 {1G&999)NN]<88N 9888"0#%	
 
  (tQ''ngLI  G ood++G* * * * *      bi00 	 
:-1===#%;w{L#I#I ; ; ; ; ; ;
: : : : :    J!  % % %*,'//:J*K*K% % %    3 3 3 3 3 3 3 3 3 3 3 3 3j IL3 ,<=F  $ M 'qrr*JJ C  C  C  C  C  C  C  C  C  CD IL3 +f4  $ M
 'qrr*J!!$	5595555533733333'**+;WEEg../?MM	 	 	 	 	 	 	 g##Iw77G F'''(;WEE++r   zkeras._legacy.backend.roundc                 *    t          j        |           S r   )r	   roundr   s    r   r  r  )       8A;;r   z&keras._legacy.backend.separable_conv2dc           	         |t          j                    }|dvrt          d|           t          |          dk    rt          d          t	          | |          \  } }t          |          }t          |t                    st          |          }|dk    r	d|z   dz   }nd|z   }t          j	        
                    | ||||||	          } |d
k    r|dk    rt          j        | d          } | S )r   Nr   r   r1   r  r   r   r   rR  r   r   )r   r   r>   r=   r   r   r5   r7   r	   rz   separable_conv2drC   )r   rU  pointwise_kernelr   r   r   r   r   s           r   r  r  /  s    /11===>>>???
7||qCDDD0K@@A~!'**Ggu%% !...4'7"
	" 	 	 	A &&&>V+C+CLL))Hr   zkeras._legacy.backend.set_valuec                 p    t          j        || j        j                  }|                     |           dS rn   )rr   rs   r.   r)   rt   )r   rv   s     r   	set_valuer  X  s/     JuAGL111EHHUOOOOOr   zkeras._legacy.backend.shapec                 *    t          j        |           S r   )r	   r<   r   s    r   r<   r<   _  r  r   zkeras._legacy.backend.sigmoidc                 .    t          j        |           }|S r   )r	   r   )r   r   s     r   r   r   e  s     Z]]FMr   zkeras._legacy.backend.signc                 *    t          j        |           S r   )r	   signr   s    r   r  r  l       71::r   zkeras._legacy.backend.sinc                 *    t          j        |           S r   )r	   sinr   s    r   r  r  r  r   r   zkeras._legacy.backend.softmaxc                 V   | j         j        dk    rt          d|            t          |t                    r"t
          j                            | |          }nHt          j        | t          j	        | |d          z
            }t          j
        ||d          }||z  }| |_        |S )r   r#   z=Cannot apply softmax to a tensor that is 1D. Received input: r   Tr   )r<   r   r>   r5   r@   r	   rz   r   rw  r  r   _keras_logits)r   r   r   	numeratordenominators        r   r   r   x  s     	w|qOAOO
 
 	
 $ )qt,, F1r}QTDIIIIJJ	mID4HHH[( FMr   zkeras._legacy.backend.softplusc                 @    t           j                            |           S r   )r	   r   softplusr   s    r   r  r         7Ar   zkeras._legacy.backend.softsignc                 @    t           j                            |           S r   )r	   r   softsignr   s    r   r  r    r  r   z5keras._legacy.backend.sparse_categorical_crossentropyc           	      d   t          j        |           } t          j        |          }t          | d          } |sct          j        t          j                    |j                  }t          j        ||d|z
            }t           j                            |          }t          |j
        t          t          f          rt          |j
                  }n|j
        j        }|g||z  }||dz
  k    rXt          t          j        t#          |          t#          |dz   |          |g                    }t          j        ||          }n(|dk    r"t'          d                    |                    t          j
        |          }| j
        j        }	|	duo|duo|	|dz
  k    }
|
r,t+          |           } t          j        |d|d         g          }|8t          j        | t          || j                            }| |         } ||         }t           j                            | |          }|^t          |dd         d          }t          j        ||          }t          j        t          j        |          ||          }||_        |S |
r#|dk    rt          j        ||dd                   }|S )	r   r,  r#   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   r5   r<   r7   r6   r=   ndims	itertoolschainr*   rC   r>   formatr  rE   r  rz   (sparse_softmax_cross_entropy_with_logits
scatter_ndrn  _keras_mask)r   r   r   r   ignore_classr   output_rankpermutationr_   target_rankupdate_shape
valid_maskro  	res_shapes                 r   sparse_categorical_crossentropyr	    s   
 !&))F!&))F&'""F %'(9(96<HH!&(ALAAV$$ &,.. )&,''l(;?""$KKtax!=!=v  K
 \&{;;;F	44:F4LL
 
 	
 8F##L,$K 	4 	+t#	+;?* 
  <FRb)9$:;;\&$|V\*J*JKK

#
#
%
8
8f 9  C crc*G44	Z
I66
mBHZ00#yAA$
 1q(( jl3B3/00Jr   z(keras._legacy.backend.spatial_2d_paddingr   r   c                    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    r1ddgddgt	          |d                   t	          |d                   g}n0ddgt	          |d                   t	          |d                   ddgg}t
          j        j                            | |          S )r   r1   r   r#   Nr   r   r   )	r=   r   r   r>   r6   r	   r   r   padr   r   r   rW   s       r   spatial_2d_paddingr    s    w<<1wqz??awqz??a/11===>>>???&&&q6Aq64
#3#3T'!*5E5EFq64
++T'!*-=-=1vF9<Aw'''r   z(keras._legacy.backend.spatial_3d_paddingr   r   r   c                    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    rZddgddg|d         d         |d         d         g|d         d         |d         d         g|d         d         |d         d         gg}nYddg|d         d         |d         d         g|d         d         |d         d         g|d         d         |d         d         gddgg}t          j        j                            | |          S )	r   r;   r   r1   r#   Nr   r   r   )r=   r   r   r>   r	   r   r   r  r  s       r   spatial_3d_paddingr    s    w<<1wqz??awqz??awqz??a/11===>>>???&&&FFQZ]GAJqM*QZ]GAJqM*QZ]GAJqM*
 FQZ]GAJqM*QZ]GAJqM*QZ]GAJqM*F
 9<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    s7     QW--D

1dA71::r   zkeras._legacy.backend.squarec                 *    t          j        |           S r   )r	   squarer   s    r   r  r    s     9Q<<r   zkeras._legacy.backend.squeezec                 .    t          j        | |g          S r   )r	   rH   r   s     r   rH   rH   !  s     :a$   r   zkeras._legacy.backend.stackc                 .    t          j        | |          S rM  )r	   rD   r   s     r   rD   rD   '  s     8AD!!!!r   zkeras._legacy.backend.stdc                     | j         j        t          j        k    r&t          j        | t          j                              } t          j                            | ||          S r   r   )	r.   rk  r	   r   r   r   r   r   
reduce_stdr   s      r   stdr  -  sL     	wRW$$GAw~''((7adX>>>r   z#keras._legacy.backend.stop_gradientc                     t          | t          t          f          rt          t          j        |           S t	          j        |           S r   )r5   r6   r7   mapr	   stop_gradient)r  s    r   r  r  5  s>     )dE]++ 02#Y///I&&&r   zkeras._legacy.backend.sumc                 .    t          j        | ||          S r   )r	   r   r   s      r   sumr   =  r  r   zkeras._legacy.backend.switchc                    | j         t          j        k    rt          j        | d          } t	          |           }|sVt                    sfd}n}t                    sfd}n}t          j        j                            | ||          }n7t                    r
             t                    r
             t	                    }||k    r2t          dt          |          z   dz   t          |          z             |dk    r||z
  }t          j        t          j        |           dg|z  gd          }	t          j        | |	          } t          j                  }
|
|	z
  }t          j        |dk    |
t          j        |
                    }t          j        | |          } t          j        |           }|S )	r   r   c                       S r4   rg   )then_expressions   r   then_expression_fnz"switch.<locals>.then_expression_fnL  	    &&r   c                       S r4   rg   )else_expressions   r   else_expression_fnz"switch.<locals>.else_expression_fnS  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)=r#   r   r   )r.   r	   r   r   r   callabler   r   r  r>   r?   rG   r<   rE   rn  r  r(  )	conditionr#  r'  	cond_ndimr$  r(  r   	expr_ndim	ndim_diff
cond_shape
expr_shape
shape_diff
tile_shapes    ``          r   switchr2  C  s    "'!!GIv..	YI .B(( 	1' ' ' ' ' ' "1(( 	1' ' ' ' ' ' "1ILi);=OPP
 O$$ 	0-o//OO$$ 	0-o//O))	y  6 i..! -	-
 i..!   q==!I-I)$$qcIo6Q  J 
9j99I/22J#j0JQ
BL,D,D J 	:66IHYAAHr   zkeras._legacy.backend.tanhc                 *    t          j        |           S r   )r	   tanhr   s    r   r4  r4  {  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                            | |          S )r   r1   r   r#   )r=   r	   r   r   r  )r   r   rW   s      r   r   r     sV     w<<11v
GAJ/!Q8G9<Aw'''r   zkeras._legacy.backend.tilec                 \    t          |t                    r|g}t          j        | |          S r   )r5   r@   r	   r(  )r   r  s     r   r(  r(    s-     !S C71a==r   zkeras._legacy.backend.to_densec                 b    t          |           rt          j                            |           S | S r   )r   r	   rB  r   )r  s    r   r   r     s/      y!!&)))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                            d          }t
          j                            | ||||          S )r   Nrc  r  )r   r   rr   rf  rg  r	   truncated_normalr  s        r   r:  r:    sZ     }  |y  &&9%%tV5t &   r   zkeras._legacy.backend.updatec                 L    t           j        j                            | |          S r   )r	   r   r   rt   )r   new_xs     r   updater=    s     9<q%(((r   z keras._legacy.backend.update_addc                 L    t           j        j                            | |          S r   )r	   r   r   
assign_add)r   	increments     r   
update_addrA         9<""1i000r   z keras._legacy.backend.update_subc                 L    t           j        j                            | |          S r   )r	   r   r   r  )r   	decrements     r   
update_subrE    rB  r   zkeras._legacy.backend.varc                     | j         j        t          j        k    r&t          j        | t          j                              } t          j                            | ||          S r  )	r.   rk  r	   r   r   r   r   r   reduce_variancer   s      r   r}   r}     sL     	wRW$$GAw~''((7""14("CCCr   zkeras._legacy.backend.variablec                    |t          j                    }t          | d          r|                                 }t	          j        t	          j        |j        d          t	          j        |j        d          fd          }t          j
        ||j        |j                  }|j        |_        |S t          j        | t          j        |          ||          }|S )r   Ntocoor#   )r6  r@  dense_shape)r.   r)   
constraint)r   r   hasattrrI  rr   r   rB   rowcolr	   r   datar<   _keras_shaper   rz  )rv   r.   r)   rK  
sparse_coor6  r  s          r   r{  r{    s     }  ug [[]]
.z~q11z~q11 
 
 O?"(
 
 

 $)
R[''dz	 	 	A Hr   zkeras._legacy.backend.zerosc                 h   t          j                    5  |t          j                    }t          j        |          }t          j        | ||          }t          |j                                                  rt          |||          cddd           S |cddd           S # 1 swxY w Y   dS r  )
r	   r  r   r   rz  r  r   r<   r   r{  r  s        r   r  r    s    
  =N$$E;u%%H5t<<<!'//##$$ 	7AU666                         r  z keras._legacy.backend.zeros_likec                 0    t          j        | ||          S r  r  r  s      r   r  r    s     =%d3333r   )NF)r   )Nr#   r$   r4   )r   rx   )F)Fr   r   F)Fr   )r   r   Fr   )NNN)r#   r   Nr#   )r   r   Nr   )r  r   Nr  )Tr8  r#   ry  )NN)r   )r   r   Nr  )r  r   Nr  )r  NN)r  r   NN)r  Nr  )r+  )FNNFNFFT)Fr   N)r
  N)r  N)r   )__doc__r  rh   rr   	keras.srcr   keras.src.api_exportr   keras.src.utils.module_utilsr   r	   r   rA   r   r   r
   r   r"   r&   ra   rd   rl   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  rK  rN  rP  rT  ra  rh  r.   rm  rq  ru  rw  rB   r|  r  r  r  r  rt  r  r  r  r  r  r  r   r  r  r  r   r  r  r  r|   r  r  r  r  r   r  r  r  r  r  r  r  r   rc   r  r  r  r  r  rE   r  r  r*  rM  rP  r*  r  r  r  r  r<   r   r  r  r   r  r  r	  r  r  r  r  rH   rD   r  r  r   r2  r4  r   r(  r   rC   r:  r=  rA  rE  r}   r{  r  r  rg   r   r   <module>rX     s}   ) )               - - - - - - 9 9 9 9 9 9		 )**  +*
 )**, , , +*, )**, , , +*, ,--   .-
 ,--   .-
 ,--   .- /00^ ^ ^ 10^B 344  54 566( ( 76(
 566  76 9::I I I ;:I
 .//# # # 0/#2 9::   ;:& ?@@  

   A@> *++  ,+
 4551 1 651 >??> > > @?>. DEE 
	# # # FE#L *++5 5 ,+5 122? ? ? 32?" .//C C C 0/C          ,--KL   .-> ,--    .-: 677
 A A A 87AH ,--    .-: )**  +*
 233& & 43&
 455  65( ?@@% % A@%P 011% % % 21%6 ,--# # # .-#
 -..) ) ) /.)
 677    87D )**  +*> -..L L L /.L +,,# # -,#
 )**1 1 1 +*1 +,,  -,
 *++" " ,+"
 )**  +*
 122# # # 32#
 )**? ? ? +*? -..  /.
 +,,M M M -,M
 +,,M M M -,M
 ,--3 3 .-3
 /00  10 /00  10 -..  /.
 344" " 54"
 233  43 .//? ? 0/?
 /00  10 /00/ / 10/ 2330 0 0 430
 *++  ,+
 011  21
 )**  +*
 ,--B B B .-B
 )**, , , +*,
 -..  /.
 *++- - - ,+- )**, , , +*,
 -..  /.
 ;<<6 6 =<6 011  21
 *++  ,+
 /00  10
 -..; ; /.;
 *++	 	 	 ,+	 /003 3 3 103
 899) ) :9)
 ,-- ( ( ( .-(V ,-- $ $ $ .-$N )**  +*
 *++- - - ,+-
 677
 
 
 87
 344   54 <==483 3 3 >=3  455   65 =>>3 3 3 ?>3 -..    /. 
 *++# # # ,+#L ,--  .- 566" " 76"J 344?H+ + + 54+\ 455@ @ 65@  -..  /. )**
 	T, T, T, +*T,n +,,  -,
 677
 % % % 87%P /00  10 +,,  -,
 -..  /. *++  ,+
 )**  +*
 -..   /.( .//  0/
 .//  0/
 EFF=AE E E GFEP 899( ( ( :9(" 899( ( ( :9(< *++  ,+ ,--  .-
 -..! ! /.!
 +,," " " -,"
 )**? ? ? +*? 344' ' 54' )**, , , +*,
 ,--4 4 .-4n *++  ,+
 677( ( ( 87( *++  ,+ .//  0/ /00  10
 677   87 ,--) ) .-)
 0111 1 211
 0111 1 211
 )**D D D +*D .//   0/4 +,,	 	 	 -,	 0114 4 4 214 4 4r   