
    0h:                     V    d Z ddlmc mZ ddlmZ ddlmZ ddlm	Z	 ddZ
	 	 	 	 d	dZy)
z.A simple network to use in tests and examples.    N)core)normalization)optimizer_v2c                 T     d }t        j                  d|       fd}||fS )z.Example of non-distribution-aware legacy code.c                      t         j                  j                  j                  dgg      j	                         } | j                  dd      S )N      ?   T)drop_remainder)tfdataDatasetfrom_tensorsrepeatbatch)datasets    ^/var/www/html/engine/venv/lib/python3.12/site-packages/tf_keras/src/distribute/test_example.py
dataset_fnz)minimize_loss_example.<locals>.dataset_fn   s<    ''//..w7>>@ }}Qt}44    r	   use_biasc                       fd}t        t        j                        rj                  |fd      S rj                  |      S j                   |             S )z(A very simple model written by the user.c                  r    t        j                         g       t        j                  d      z
  } | | z  S )Nr   )r   reshapeconstant)ylayerxs    r   loss_fnz8minimize_loss_example.<locals>.model_fn.<locals>.loss_fn&   s.    

58R(2;;s+;;Aq5Lr   c                       j                   S Ntrainable_variablesr   s   r   <lambda>z9minimize_loss_example.<locals>.model_fn.<locals>.<lambda>,       !:!: r   
isinstancer   OptimizerV2minimize)r   r   r   	optimizeruse_callable_losss   ` r   model_fnz'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_exampler.      s.    5 JJq8,E1  Z&&r   c                    	 fd} |        	t        j                  ||d      t        j                  dd      	fd}||fS )zKExample of non-distribution-aware legacy code with batch
    normalization.c                  V   t         j                  j                  j                  t	              D  cg c]I  } t	        d      D cg c]0  }t	        d      D cg c]  }t        |dz  |z   | dz  z          c}2 c}}K c}}}       j                         S c c}w c c}}w c c}}} w )N      d   )r   r   r   from_tensor_slicesrangefloatr   )zr   r   batch_per_epochs      r   r   z%batchnorm_example.<locals>.dataset_fn@   s     ww11 / 
  #2Y :?qBAU1q519q3w./B
 &(	 Cs)   B$BB7B<B$BB$F)renormmomentumfusedr	   r   c                       fd}t        t        j                        rj                  |fd      S j                  |      S )zA model that uses batchnorm.c                      d      } t        j                  rUt         j                  j                  j	                  t         j                  j                  j
                  j                        ng       5  t        j                  t        j                   |             t        j                  d      z
        }d d d        |S # 1 sw Y   S xY w)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   z4batchnorm_example.<locals>.model_fn.<locals>.loss_fnV   s    !d+A((- 		++BIILL,B,B,M,MN 
 ~~MM%(+bkk#.>> K Ks   8ACCc                       j                   S r    r!   r#   s   r   r$   z5batchnorm_example.<locals>.model_fn.<locals>.<lambda>f   r%   r   r&   )r   r   rH   r   r*   rI   s   ` r   r,   z#batchnorm_example.<locals>.model_fnS   sF    	 i!9!9:%%: 
 !!'**r   )r   BatchNormalizationr   r-   )
optimizer_fnr8   r:   r9   rI   r   r,   rH   r   r*   s
    `  `  @@@r   batchnorm_examplerM   6   sN     I00I JJq5)E+2 Z**r   )FT)r	   g?FF)__doc__tensorflow.compat.v2r@   v2r   tf_keras.src.legacy_tf_layersr   r   tf_keras.src.optimizers.legacyr   r.   rM    r   r   <module>rT      s2    5 ! ! . 7 7'@ $6+r   