
    ~Wh$                     X    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dS )z.A simple network to use in tests and examples.    N)core)normalization)optimizer_v2FTc                 R     d }t          j        d|           fd}||fS )z.Example of non-distribution-aware legacy code.c                      t           j        j                            dgg                                          } |                     dd          S )N      ?   T)drop_remainder)tfdataDatasetfrom_tensorsrepeatbatch)datasets    c/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/keras/distribute/test_example.py
dataset_fnz)minimize_loss_example.<locals>.dataset_fn   sA    '/..w77>>@@ }}Qt}444    r	   use_biasc                       fd}t          t          j                  r                    |fd          S r                    |          S                      |                      S )z(A very simple model written by the user.c                  t    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&   s4    
5588R((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:: 	1%%::::    	1%%g...%%ggii000r   )r   Dense)r*   r   r+   r   r,   r   s   ` `  @r   minimize_loss_exampler.      s\    5 5 5 Jq8,,,E1 1 1 1 1 1 1  Z&&r   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                      t           j        j                            d t	                     D                                                       S )Nc                 F    g | ]fd t          d          D             S )c                 J    g | ]fd t          d          D             S )c                 F    g | ]}t          d z  |z   dz  z             S )   d   )float).0r   r   zs     r   
<listcomp>zObatchnorm_example.<locals>.dataset_fn.<locals>.<listcomp>.<listcomp>.<listcomp>F   s2    BBBAU1q519q3w.//BBBr   r5   range)r8   r   r9   s    @r   r:   zDbatchnorm_example.<locals>.dataset_fn.<locals>.<listcomp>.<listcomp>E   sH        CBBBBqBBB  r      r;   )r8   r9   s    @r   r:   z9batchnorm_example.<locals>.dataset_fn.<locals>.<listcomp>D   sR       
 	   "2YY    r   )r   r   r   from_tensor_slicesr<   r   )batch_per_epochs   r   r   z%batchnorm_example.<locals>.dataset_fn@   sR     w11 
 //  
 
 &((	r   F)renormmomentumfusedr	   r   c                       fd}t          t          j                  r                    |fd          S                     |          S )zA model that uses batchnorm.c                      d          } t          j        r=t           j        j                            t           j        j        j        j                  ng           5  t          j        t          j         |                     t          j	        d          z
            }d d d            n# 1 swxY w Y   |S )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(-	++BIL,B,MNNN   
 ~M%%((++bk#.>.>>                Ks   "AB33B7:B7c                       j         S r    r!   r#   s   r   r$   z5batchnorm_example.<locals>.model_fn.<locals>.<lambda>f   r%   r   r&   )r   r   rO   r   r*   rP   s   ` r   r,   z#batchnorm_example.<locals>.model_fnS   s    	 	 	 	 	 	 	 	 i!9:: 	%%::::  
 !!'***r   )r   BatchNormalizationr   r-   )
optimizer_fnr?   rA   r@   rP   r   r,   rO   r   r*   s
    `  `  @@@r   batchnorm_examplerT   6   s         I0  I Jq5)))E+ + + + + + + +2 Z**r   )FT)r	   r/   FF)__doc__tensorflow.compat.v2rG   v2r   keras.legacy_tf_layersr   r   keras.optimizers.legacyr   r.   rT    r   r   <module>r[      s    5 4 ! ! ! ! ! ! ! ! ! ' ' ' ' ' ' 0 0 0 0 0 0 0 0 0 0 0 0' ' ' '@ $6+ 6+ 6+ 6+ 6+ 6+r   