
    6bi:                     Z    S r SSKJs  Jr  SSKJr  SSKJr  SSKJ	r	  SS jr
    S	S jrg)
z.A simple network to use in tests and examples.    N)core)normalization)optimizer_v2c                 P   ^ ^^ S n[         R                  " SUS9mUU U4S jnXCT4$ )z.Example of non-distribution-aware legacy code.c                      [         R                  R                  R                  S//5      R	                  5       n U R                  SSS9$ )N      ?   T)drop_remainder)tfdataDatasetfrom_tensorsrepeatbatch)datasets    ^/home/james-whalen/.local/lib/python3.13/site-packages/tf_keras/src/distribute/test_example.py
dataset_fn)minimize_loss_example.<locals>.dataset_fn   s<    ''//..w7>>@ }}Qt}44    r	   use_biasc                    >^  UU 4S jn[        T[        R                  5      (       a  TR                  UU4S j5      $ T(       a  TR                  U5      $ TR                  U" 5       5      $ )z(A very simple model written by the user.c                  t   > [         R                  " T" T5      / 5      [         R                  " S5      -
  n X -  $ )Nr   )r   reshapeconstant)ylayerxs    r   loss_fn8minimize_loss_example.<locals>.model_fn.<locals>.loss_fn&   s,    

58R(2;;s+;;A5Lr   c                     > T R                   $ Ntrainable_variablesr   s   r   <lambda>9minimize_loss_example.<locals>.model_fn.<locals>.<lambda>,       !:!:r   
isinstancer   OptimizerV2minimize)r   r   r   	optimizeruse_callable_losss   ` r   model_fn'minimize_loss_example.<locals>.model_fn#   s_    	 i!9!9::%%:  %%g..%%gi00r   )r   Dense)r-   r   r.   r   r/   r   s   ` `  @r   minimize_loss_exampler2      s,    5 JJq8,E1  &&r   c                    ^^^^^	 U4S jnU " 5       m	[         R                  " X2SS9m[        R                  " SSS9mUUU	U4S jnXeT4$ )zGExample of non-distribution-aware legacy code with batch
normalization.c                  h  > [         R                  R                  R                  [	        T5       V VVs/ s HP  n [	        S5       VVs/ s H4  n[	        S5       Vs/ s H  n[        US-  U-   U S-  -   5      PM     snPM6     snnPMR     snnn 5      R                  5       $ s  snf s  snnf s  snnn f )N      d   )r   r   r   from_tensor_slicesrangefloatr   )zr   r   batch_per_epochs      r   r   %batchnorm_example.<locals>.dataset_fn@   s     ww11 /
 0A #2Y& :?qBAU1q519q3w./B& 0
 &(	 Cs)   B-B'!B"<B'B-"B''B-F)renormmomentumfusedr	   r   c                    >^  UUUU 4S jn[        T[        R                  5      (       a  TR                  UU4S j5      $ TR                  U5      $ )zA model that uses batchnorm.c                    > T" TSS9n [         R                  " T(       aU  [         R                  R                  R	                  [         R                  R                  R
                  R                  5      O/ 5         [         R                  " [         R                  " T" U 5      5      [         R                  " S5      -
  5      nS S S 5        U$ ! , (       d  f       W$ = f)NT)trainingr   )
r   control_dependenciescompatv1get_collection	GraphKeys
UPDATE_OPSreduce_mean
reduce_sumr   )r   loss	batchnormr   update_ops_in_replica_moder   s     r   r   4batchnorm_example.<locals>.model_fn.<locals>.loss_fnV   s    !d+A((- 		++BIILL,B,B,M,MN
 ~~MM%(+bkk#.>> K  Ks   ;AC
Cc                     > T R                   $ r"   r#   r%   s   r   r&   5batchnorm_example.<locals>.model_fn.<locals>.<lambda>f   r(   r   r)   )r   r   rM   r   r-   rN   s   ` r   r/   #batchnorm_example.<locals>.model_fnS   sN    	 	 i!9!9::%%: 
 !!'**r   )r   BatchNormalizationr   r1   )
optimizer_fnr<   r?   r>   rN   r   r/   rM   r   r-   s
    `  `  @@@r   batchnorm_examplerU   6   sO     I00I JJq5)E+ +2 **r   )FT)r	   g?FF)__doc__tensorflow.compat.v2rE   v2r   tf_keras.src.legacy_tf_layersr   r   tf_keras.src.optimizers.legacyr   r2   rU    r   r   <module>r\      s2    5 ! ! . 7 7'@ $6+r   