
    0hN*                     $   d Z ddlZddlmZ  ej
                  dg d      Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z G d dej                         Zd Zd Zd Zd Zd Zdefdefde	fde
fdefdefdefdefdefdefdefd efd!efd"efgZd$d#Zy)%z2Tests for saving/loading function for keras Model.    NModelFn)modelinput_shapetarget_shapec                      t        j                  t         j                  j                  ddd      t         j                  j                  dd      g      } t	        | dd	      S )
zBasic sequential model.   relur   
activationr      softmaxr   Nr   Nr   keras
SequentiallayersDenser   r   s    `/var/www/html/engine/venv/lib/python3.12/site-packages/tf_keras/src/tests/model_architectures.pybasic_sequentialr      sX    LLqVFLLqY7	
E 5)Y//    c                      t        j                  t         j                  j                  dd      t         j                  j                  dd      g      } t	        | dd      S )z+Sequential model with deferred input shape.r   r	   r   r   r   r   r   r   r   s    r   basic_sequential_deferredr   &   sV    LLqV4LLqY7	
E 5)Y//r   c                  z   t        j                  d      } t         j                  j                  t	        d      D cg c]!  }t         j                  j                  d      # c}      } ||       }t        j                  j                  d      |      }t        j                  | |      }t        |dd      S c c}w )zStacked RNN model.r   r   r   N   r   r   )	r   Inputr   RNNrangeLSTMCellr   Modelr   )inputs_layerxoutputsr   s         r   stacked_rnnr*   1   s    [[#FLLaI1ell33A6IJEfAll  #A&GKK(E5,	22	 Js   &B8c                     t        j                  d      } t        j                  j                  dd      |       }t        j                  j                  dd      |      }t        j                  j                  dd      |      }t        j                  j	                  d      |      }t        j
                  | |      }t        |dd	      S )
zLSTM model.r   r   T)return_sequencesr   r   Fr   r   r   r    r   LSTMr   r$   r   r%   r(   r)   r   s       r   lstmr0   ;   s    [[#F!d3F;A!d3A6A!e4Q7All  #A&GKK(E5,	22r   c                  &   t        j                  dd      } t        j                  dd      }t        j                  j                  dd      |       }t        j                  j	                  d      |      }t         j                  j                  ||g      }t        j                  j                  d	d
d      |      }t        j                  j                  ddd      |      }t        j                  | |g||g      }t        |ddgddg      S )zMulti-input Multi-output model.Nbodyshapename)r   tags
   r      r   sigmoidpriorityr   r6   r   r   
departmentr%   r)   N   r   r   )	r   r    r   	Embeddingr.   concatenater   r$   r   )
body_input
tags_inputr(   body_featurespred_1pred_2r   s          r   multi_input_multi_outputrH   F   s    78J4f5Jr1%j1ALL%%a(+M  -!<=A\\ijI!LF\\ilKANFKKJ'&&1AE 59i09i2HIIr   c                  |   t        j                  t         j                  j                  ddd      t         j                  j                  dd      g      } t        j                  d      } | |      }t        j                  j                  dd      |      }t        j
                  ||      }t        |d	d
      S )z0A sequential model nested in a functional model.r   r	   r
   r   r   r   r5   r   r   r   )r   r   r   r   r    r$   r   )inner_modelr%   r(   r)   r   s        r   nested_sequential_in_functionalrL   X   s    ""LLqVFLLqV4	
K [[t$FFAll  y 9!<GKK(E5)Y//r   c                     d} d}d}t        j                  d| f      }t         j                  j                  |d      } ||      \  }}}||g}t        j                  d|f      }	t         j                  j                  |dd      }
 |
|	|      \  }}}t         j                  j	                  |d	
      } ||      }t        j
                  ||	g|      }t        |dd| fdd|fgdd|f      S )zSequence to sequence model.r   r   NrJ   T)return_state)r,   rN   )initial_stater   r   r-   )num_encoder_tokensnum_decoder_tokens
latent_dimencoder_inputsencoderr&   state_hstate_cencoder_statesdecoder_inputsdecoder_lstmdecoder_outputsdecoder_denser   s                 r   
seq_to_seqr\   h   s   J[[.@'ABNll
>G!.1Aww'N[[.@'ABN<<$$T % L )nOQ LL&&'9i&PM#O4OKK8/JE
%	&q2D(EF	q$% r   c                  x   t        j                  ddd      } t        j                  j                  ddd      |       }t        j                  j	                  d	      |      }t        j                  j                  d
dd      |      }t        j                  dd      }t         j                  j                  ||g      }t        j                  j                  dd      |      }t        j                  j                  d
dd      |      }t        j                  | |g||g      }t        |ddgddg      S )z#Shared layer in a functional model.)r8   int32
main_input)r5   dtyper6   r9   r   r8   )
output_dim	input_diminput_lengthr   r@   r:   
aux_outputr<   )r9   	aux_inputr4   r   r	   r   main_outputr>   )Nr8   )Nr9   r?   )	r   r    r   rA   r.   r   rB   r$   r   )r_   r(   lstm_outauxiliary_outputauxiliary_inputrf   r   s          r   shared_layer_functionalrj      s(   5lKJ!qrJ	A ||  #A&H||))	il *  kk;?O  (O!<=A103A,,$$	im % 	K KKO,./E 5:y1Iy3IJJr   c                     t        j                  t         j                  j                  ddd      t         j                  j                  ddd      g      } t        j                  d      }t        j                  d      } | |      } | |      }t         j                  j                  ||g      }t        j                  j                         |      }t        j                  ||g|      }t        |ddgd      S )z.Shared sequential model in a functional model.r   r   r	   r   )r9   r9   r   )Nr9   r9   r   )Nr   )	r   r   r   Conv2Dr    rB   GlobalAveragePooling2Dr$   r   )rK   inputs_1inputs_2x1x2r(   r)   r   s           r   shared_sequentialrr      s    ""LL18LL18	
K {{9%H{{9%H	X	B	X	B  "b*All113A6GKK8,g6E5?O<iHHr   c                   @     e Zd ZdZd fd	Zd Zd Zed        Z xZ	S )MySubclassModelzA subclass model.c                 ^   t         |   d       d|i| _        t        j                  j                  dd      | _        t        j                  j                  dd      | _        t        j                  j                         | _	        t        j                  j                  d	      | _        y )
Nmy_subclass_modelr6   rb      r	   r   r   r         ?)super__init___configr   r   r   dense1dense2BatchNormalizationbnDropoutdp)selfrb   	__class__s     r   r{   zMySubclassModel.__init__   s    12#Y/ll((v(>ll((y(A,,113,,&&s+r   c                     | j                  |      }| j                  |      }| j                  |      }| j                  |      S r2   )r}   r   r   r~   )r   r%   kwargsr(   s       r   callzMySubclassModel.call   s8    KKGGAJGGAJ{{1~r   c                     | j                   S r2   )r|   )r   s    r   
get_configzMySubclassModel.get_config   s    ||r   c                      | di |S )N r   )clsconfigs     r   from_configzMySubclassModel.from_config   s    }V}r   r
   )
__name__
__module____qualname____doc__r{   r   r   classmethodr   __classcell__r   s   @r   rt   rt      s)    ,  r   rt   c                  X     G d dt         j                        } t         |        dd      S )z2A subclass model nested in another subclass model.c                   (     e Zd ZdZ fdZd Z xZS )4nested_subclassed_model.<locals>.NestedSubclassModelzA nested subclass model.c                    t         |           t        j                  j	                  dd      | _        t        j                  j	                  dd      | _        t        j                  j                         | _        t               | _
        y )Nr   r	   r   r   )rz   r{   r   r   r   r}   r~   r   r   rt   inner_subclass_modelr   r   s    r   r{   z=nested_subclassed_model.<locals>.NestedSubclassModel.__init__   sc    G,,,,Q6,BDK,,,,Q6,BDKll557DG(7(9D%r   c                     | j                  |      }| j                  |      }| j                  |      }| j                  |      S r2   )r}   r   r   r~   r   r%   r(   s      r   r   z9nested_subclassed_model.<locals>.NestedSubclassModel.call   s;    F#A
A))!,A;;q>!r   r   r   r   r   r{   r   r   r   s   @r   NestedSubclassModelr      s    &	:	"r   r   r   r   r   r$   r   )r   s    r   nested_subclassed_modelr      s'    "ekk "  &()Y??r   c                  *   t               } t        j                  d      } | |      }t        j                  j	                         |      }t        j                  j                  dd      |      }t        j                  ||      }t        |dd      S )z.A subclass model nested in a functional model.r
   rJ   r   r   r   r   r   )rt   r   r    r   r   r   r$   r   )r   r%   r(   r)   r   s        r   %nested_subclassed_in_functional_modelr      sw    *,[[t$FV$A'')!,All  y 9!<GKK(E5)Y//r   c                  d    d  G fddt         j                        } t         |        dd      S )z.A functional model nested in a subclass model.c                  4   t        j                  d      } t        j                  j                  dd      |       }t        j                  j	                         |      }t        j                  j                  d      |      }t        j
                  | |      S )N)r   rJ   r   r	   r   r   )r   r    r   r   r   r$   )r%   r(   r)   s      r   get_functional_modelzCnested_functional_in_subclassed_model.<locals>.get_functional_model   so    4(LLqV4V<LL++-a0,,$$Q'*{{67++r   c                   ,     e Zd ZdZ fdZd Z xZS )Nnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModelz&A functional nested in subclass model.c                     t         |   d       t        j                  j	                  dd      | _        t        j                  j	                  dd      | _                | _        y )N%nested_functional_in_subclassed_modelrw   r   r	   r   r   )rz   r{   r   r   r   r}   r~   inner_functional_model)r   r   r   s    r   r{   zWnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel.__init__   sU    G"IJ,,,,Q6,BDK,,,,Q6,BDK*>*@D'r   c                 h    | j                  |      }| j                  |      }| j                  |      S r2   )r}   r   r~   r   s      r   r   zSnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel.call   s.    F#A++A.A;;q>!r   r   )r   r   s   @r   NestedFunctionalInSubclassModelr      s    4	A	"r   r   r   r   r   )r   r   s    @r   r   r      s-    ,"%++ " 24iKKr   c                  X     G d dt         j                        } t         |        dd      S )z!Shared layer in a subclass model.c                   (     e Zd ZdZ fdZd Z xZS )?shared_layer_subclassed_model.<locals>.SharedLayerSubclassModelz$A subclass model with shared layers.c                     t         |   d       t        j                  j	                  dd      | _        t        j                  j                  d      | _        t        j                  j                         | _	        y )Nshared_layer_subclass_modelrw   r   r	   r   ry   )
rz   r{   r   r   r   denser   r   r   r   r   s    r   r{   zHshared_layer_subclassed_model.<locals>.SharedLayerSubclassModel.__init__  sY    G"?@++A&+ADJll**3/DGll557DGr   c                     | j                  |      }| j                  |      }| j                  |      }| j                  |      S r2   )r   r   r   r   s      r   r   zDshared_layer_subclassed_model.<locals>.SharedLayerSubclassModel.call  s8    

6"A
A
A::a= r   r   r   s   @r   SharedLayerSubclassModelr     s    2	8	!r   r   r   r   )r   s    r   shared_layer_subclassed_modelr      s'    !5;; ! +-y)DDr   c                  P   t        j                  d      } t        j                  j                  d      |       }t        j                  j	                         |      }t        j                  j                  d      |      }t        j
                  | |dd      }t        |dd	      S )
z%A functional model with keyword args.r
   rJ   r   r   mF)r6   	trainabler   r   )r   r    r   r   r   r$   r   r/   s       r   functional_with_keyword_argsr     s|    [[t$F1f%A'')!,All  #A&GKKcUCE5)Y//r   r   r   r*   r0   rH   rL   r\   rj   rr   r   r   r   r   r   c                 F    t         D cg c]  }|d   | vs| }}|S c c}w )z,Get all models excluding the specified ones.r   )
ALL_MODELS)exclude_modelsr   modelss      r   
get_modelsr   8  s+    !+NuQx~/MeNFNM Os   r2   )r   collectionstf_keras.srcsrcr   
namedtupler   r   r   r*   r0   rH   rL   r\   rj   rr   r$   rt   r   r   r   r   r   r   r   r   r   r   <module>r      s   9   !+
 
 7
0033J$0 4K.I$ekk 2@,0L6E*0 )* ";<K TN!9:&(GH: 78+, 78/-
 	0- %&CD#%AB)
0r   