
    6biN*                     &   S r SSKrSSKJr  \R
                  " S/ SQ5      rS rS rS r	S r
S	 rS
 rS rS rS r " S S\R                   5      rS rS rS rS rS rS\4S\4S\	4S\
4S\4S\4S\4S\4S\4S\4S\4S \4S!\4S"\4/rS$S# jrg)%z2Tests for saving/loading function for keras Model.    NModelFn)modelinput_shapetarget_shapec                      [         R                  " [         R                  R                  SSSS9[         R                  R                  SSS9/5      n [	        U SS	5      $ )
zBasic sequential model.   relur   
activationr      softmaxr   Nr   Nr   keras
SequentiallayersDenser   r   s    `/home/james-whalen/.local/lib/python3.13/site-packages/tf_keras/src/tests/model_architectures.pybasic_sequentialr      sX    LLqVFLLqY7	
E 5)Y//    c                      [         R                  " [         R                  R                  SSS9[         R                  R                  SSS9/5      n [	        U SS5      $ )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                     [         R                  " S5      n [         R                  R                  [	        S5       Vs/ s H"  n[         R                  R                  S5      PM$     sn5      nU" U 5      n[         R                  R                  S5      " U5      n[         R                  " X5      n[        USS5      $ s  snf )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I1ell33A6IJEfAll  #A&GKK(E5,	22	 Js   )B=c                     [         R                  " S5      n [         R                  R                  SSS9" U 5      n[         R                  R                  SSS9" U5      n[         R                  R                  SSS9" U5      n[         R                  R	                  S5      " U5      n[         R
                  " X5      n[        USS	5      $ )
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                     [         R                  " SSS9n [         R                  " SSS9n[         R                  R                  SS5      " U 5      n[         R                  R	                  S5      " U5      n[         R                  R                  X1/5      n[         R                  R                  S	S
SS9" U5      n[         R                  R                  SSSS9" U5      n[         R                  " X/XE/S9n[        USS/SS/5      $ )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'&1AE 59i09i2HIIr   c                  j   [         R                  " [         R                  R                  SSSS9[         R                  R                  SSS9/5      n [         R                  " SS9nU " U5      n[         R                  R                  SSS9" U5      n[         R
                  " X5      n[        US	S
5      $ )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                     Sn SnSn[         R                  " SU 4S9n[         R                  R                  USS9nU" U5      u  pVnXg/n[         R                  " SU4S9n	[         R                  R                  USSS9n
U
" XS9u  n  n[         R                  R	                  US	S
9nU" U5      n[         R
                  " X9/U5      n[        USSU 4SSU4/SSU45      $ )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A'N[[.@'ABN<<$$T % L )OQ LL&&'9i&PM#O4OKK8/JE
%	&q2D(EF	q$% r   c                  X   [         R                  " SSSS9n [         R                  R                  SSSS9" U 5      n[         R                  R	                  S	5      " U5      n[         R                  R                  S
SSS9" U5      n[         R                  " SSS9n[         R                  R                  X$/5      n[         R                  R                  SSS9" U5      n[         R                  R                  S
SSS9" U5      n[         R                  " X/XS/S9n[        USS/SS/5      $ )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  (!<=A103A,,$$	im % 	K KK,/E 5:y1Iy3IJJr   c            	         [         R                  " [         R                  R                  SSSS9[         R                  R                  SSSS9/5      n [         R                  " S5      n[         R                  " S5      nU " U5      nU " U5      n[         R                  R                  X4/5      n[         R                  R                  5       " U5      n[         R                  " X/U5      n[        USS/S5      $ )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  "*All113A6GKK,g6E5?O<iHHr   c                   L   ^  \ rS rSrSrSU 4S jjrS rS r\S 5       r	Sr
U =r$ )	MySubclassModel   zA subclass model.c                 L  > [         TU ]  SS9  SU0U l        [        R                  R                  SSS9U l        [        R                  R                  SSS9U l        [        R                  R                  5       U l	        [        R                  R                  S	5      U l        g )
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|   MySubclassModel.__init__   s    12#Y/ll((v(>ll((y(A,,113,,&&s+r   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      $ r2   )r~   r   r   r   )r   r%   kwargsr(   s       r   callMySubclassModel.call   s8    KKGGAJGGAJ{{1~r   c                     U R                   $ r2   )r}   )r   s    r   
get_configMySubclassModel.get_config   s    ||r   c                     U " S0 UD6$ )N r   )clsconfigs     r   from_configMySubclassModel.from_config   s    }V}r   )r}   r   r~   r   r   r
   )__name__
__module____qualname____firstlineno____doc__r|   r   r   classmethodr   __static_attributes____classcell__r   s   @r   rt   rt      s)    ,  r   rt   c                  X     " S S[         R                  5      n [        U " 5       SS5      $ )z2A subclass model nested in another subclass model.c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )4nested_subclassed_model.<locals>.NestedSubclassModel   zA nested subclass model.c                   > [         TU ]  5         [        R                  R	                  SSS9U l        [        R                  R	                  SSS9U l        [        R                  R                  5       U l        [        5       U l
        g )Nr   r	   r   r   )r{   r|   r   r   r   r~   r   r   r   rt   inner_subclass_modelr   r   s    r   r|   =nested_subclassed_model.<locals>.NestedSubclassModel.__init__   sc    G,,,,Q6,BDK,,,,Q6,BDKll557DG(7(9D%r   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      $ r2   )r~   r   r   r   r   r%   r(   s      r   r   9nested_subclassed_model.<locals>.NestedSubclassModel.call   s;    F#A
A))!,A;;q>!r   )r   r~   r   r   	r   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                  $   [        5       n [        R                  " SS9nU " U5      n[        R                  R	                  5       " U5      n[        R                  R                  SSS9" U5      n[        R                  " X5      n[        USS5      $ )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      su    *,[[t$FV$A'')!,All  y 9!<GKK(E5)Y//r   c                  f   ^ S m " U4S jS[         R                  5      n [        U " 5       SS5      $ )z.A functional model nested in a subclass model.c                  0   [         R                  " SS9n [         R                  R                  SSS9" U 5      n[         R                  R	                  5       " U5      n[         R                  R                  S5      " U5      n[         R
                  " X5      $ )N)r   rJ   r   r	   r   r   )r   r    r   r   r   r$   )r%   r(   r)   s      r   get_functional_modelCnested_functional_in_subclassed_model.<locals>.get_functional_model   sm    4(LLqV4V<LL++-a0,,$$Q'*{{6++r   c                   6   >^  \ rS rSrSrU U4S jrS rSrU =r$ )Nnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel   z&A functional nested in subclass model.c                    > [         TU ]  SS9  [        R                  R	                  SSS9U l        [        R                  R	                  SSS9U l        T" 5       U l        g )N%nested_functional_in_subclassed_modelrx   r   r	   r   r   )r{   r|   r   r   r   r~   r   inner_functional_model)r   r   r   s    r   r|   Wnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel.__init__   sU    G"IJ,,,,Q6,BDK,,,,Q6,BDK*>*@D'r   c                 h    U R                  U5      nU R                  U5      nU R                  U5      $ r2   )r~   r   r   r   s      r   r   Snested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel.call   s.    F#A++A.A;;q>!r   )r~   r   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     " S S[         R                  5      n [        U " 5       SS5      $ )z!Shared layer in a subclass model.c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )?shared_layer_subclassed_model.<locals>.SharedLayerSubclassModeli  z$A subclass model with shared layers.c                    > [         TU ]  SS9  [        R                  R	                  SSS9U l        [        R                  R                  S5      U l        [        R                  R                  5       U l	        g )Nshared_layer_subclass_modelrx   r   r	   r   rz   )
r{   r|   r   r   r   denser   r   r   r   r   s    r   r|   Hshared_layer_subclassed_model.<locals>.SharedLayerSubclassModel.__init__  sY    G"?@++A&+ADJll**3/DGll557DGr   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      $ r2   )r   r   r   r   s      r   r   Dshared_layer_subclassed_model.<locals>.SharedLayerSubclassModel.call  s8    

6"A
A
A::a= r   )r   r   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                  L   [         R                  " SS9n [         R                  R                  S5      " U 5      n[         R                  R	                  5       " U5      n[         R                  R                  S5      " U5      n[         R
                  " XSSS9n[        USS	5      $ )
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     sz    [[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                 P    [          Vs/ s H  oS   U ;  d  M  UPM     nnU$ s  snf )z,Get all models excluding the specified ones.r   )
ALL_MODELS)exclude_modelsr   modelss      r   
get_modelsr   8  s*    !+NQx~/MeF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   