
    ~Wh=*                        d Z ddlZddl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dS )%z2Tests for saving/loading function for keras Model.    NModelFn)modelinput_shapetarget_shapec                      t          j        t           j                            ddd          t           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    e/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/keras/tests/model_architectures.pybasic_sequentialr      s_    LqVFFLqY77	
 E 5)Y///    c                      t          j        t           j                            dd          t           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   &   s]    LqV44LqY77	
 E 5)Y///r   c                  F   t          j        d          } t           j                            d t	          d          D                       } ||           }t          j                            d          |          }t          j        | |          }t          |dd          S )zStacked RNN model.r   c                 L    g | ]!}t           j                            d           "S r   )r   r   LSTMCell).0_s     r   
<listcomp>zstacked_rnn.<locals>.<listcomp>4   s(    III1el33A66IIIr   r   r   N   r   r   )r   Inputr   RNNranger   Modelr   )inputslayerxoutputsr   s        r   stacked_rnnr.   1   s    [##FLIIaIIIJJEfAl  ##A&&GK((E5,	222r   c                     t          j        d          } t          j                            dd          |           }t          j                            dd          |          }t          j                            dd          |          }t          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   lstmr4   ;   s    [##F!d33F;;A!d33A66A!e44Q77Al  ##A&&GK((E5,	222r   c                  @   t          j        dd          } t          j        dd          }t          j                            dd          |           }t          j                            d          |          }t           j                            ||g          }t          j                            d	d
d          |          }t          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namer   tags
   r%      r   sigmoidpriorityr   r:   r   r   
departmentr*   r-   N   r   r   )	r   r&   r   	Embeddingr2   concatenater   r)   r   )
body_input
tags_inputr,   body_featurespred_1pred_2r   s          r   multi_input_multi_outputrL   F   s   7888J4f555Jr1%%j11AL%%a((++M  -!<==A\ijII!LLF\ilKKANNFKJ'&&1A  E 59i09i2HIIIr   c                     t          j        t           j                            ddd          t           j                            dd          g          } t          j        d          } | |          }t          j                            dd          |          }t          j        ||          }t          |d	d
          S )z0A sequential model nested in a functional model.r   r	   r
   r   r   r   r9   r   r   r   )r   r   r   r   r&   r)   r   )inner_modelr*   r,   r-   r   s        r   nested_sequential_in_functionalrP   X   s    "LqVFFLqV44	
 K [t$$$FFAl  y 99!<<GK((E5)Y///r   c                     d} d}d}t          j        d| f          }t           j                            |d          } ||          \  }}}||g}t          j        d|f          }	t           j                            |dd          }
 |
|	|          \  }}}t           j                            |d	
          } ||          }t          j        ||	g|          }t          |dd| fdd|fgdd|f          S )zSequence to sequence model.r   r   NrN   T)return_state)r0   rR   )initial_stater   r   r1   )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BBBNl
>>G!'.11Aww'N[.@'ABBBN<$$T %  L )Ln  OQ L&&'9i&PPM#mO44OK8/JJE
%	&q2D(EF	q$%  r   c                     t          j        ddd          } t          j                            ddd          |           }t          j                            d	          |          }t          j                            d
dd          |          }t          j        dd          }t           j                            ||g          }t          j                            dd          |          }t          j                            d
dd          |          }t          j        | |g||g          }t          |ddgddg          S )z#Shared layer in a functional model.)r<   int32
main_input)r9   dtyper:   r=   r%   r<   )
output_dim	input_diminput_lengthr   rD   r>   
aux_outputr@   )r=   	aux_inputr8   r   r	   r   main_outputrB   )Nr<   )Nr=   rC   )	r   r&   r   rE   r2   r   rF   r)   r   )rc   r,   lstm_outauxiliary_outputauxiliary_inputrj   r   s          r   shared_layer_functionalrn      sZ   5lKKKJ!qrJJ	 	A |  ##A&&H|))	il *    k;???O  (O!<==A10033A,$$	im %  	 	K KO,./  E 5:y1Iy3IJJJr   c                     t          j        t           j                            ddd          t           j                            ddd          g          } t          j        d          }t          j        d          } | |          } | |          }t           j                            ||g          }t          j                                        |          }t          j        ||g|          }t          |ddgd          S )z.Shared sequential model in a functional model.r   r   r	   r   )r=   r=   r   )Nr=   r=   r   )Nr%   )	r   r   r   Conv2Dr&   rF   GlobalAveragePooling2Dr)   r   )rO   inputs_1inputs_2x1x2r,   r-   r   s           r   shared_sequentialrv      s    "L188L188	
 K {9%%H{9%%H	X		B	X		B  "b**Al1133A66GK8,g66E5?O<iHHHr   c                   F     e Zd ZdZd fd	Zd Zd Zed             Z xZ	S )MySubclassModelzA subclass model.r   c                    t                                          d           d|i| _        t          j                            dd          | _        t          j                            dd          | _        t          j                                        | _	        t          j        
                    d	          | _        d S )
Nmy_subclass_modelr:   rf      r	   r   r   r         ?)super__init___configr   r   r   dense1dense2BatchNormalizationbnDropoutdp)selfrf   	__class__s     r   r   zMySubclassModel.__init__   s    1222#Y/l((v(>>l((y(AA,1133,&&s++r   c                     |                      |          }|                     |          }|                     |          }|                     |          S r6   )r   r   r   r   )r   r*   kwargsr,   s       r   callzMySubclassModel.call   sA    KKGGAJJGGAJJ{{1~~r   c                     | j         S r6   )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    s}}V}}r   r
   )
__name__
__module____qualname____doc__r   r   r   classmethodr   __classcell__r   s   @r   rx   rx      s|        , , , , , ,       [    r   rx   c                  d     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                 L   t                                                       t          j                            dd          | _        t          j                            dd          | _        t          j                                        | _        t                      | _
        d S )Nr%   r	   r   r   )r~   r   r   r   r   r   r   r   r   rx   inner_subclass_modelr   r   s    r   r   z=nested_subclassed_model.<locals>.NestedSubclassModel.__init__   sz    GG,,,Q6,BBDK,,,Q6,BBDKl5577DG(7(9(9D%%%r   c                     |                      |          }|                     |          }|                     |          }|                     |          S r6   )r   r   r   r   r   r*   r,   s      r   r   z9nested_subclassed_model.<locals>.NestedSubclassModel.call   sE    F##A

A))!,,A;;q>>!r   r   r   r   r   r   r   r   r   s   @r   NestedSubclassModelr      sM        &&	: 	: 	: 	: 	:	" 	" 	" 	" 	" 	" 	"r   r   r   r   r   r)   r   )r   s    r   nested_subclassed_modelr      sL    " " " " "ek " " "  &&(()Y???r   c                  H   t                      } t          j        d          } | |          }t          j                                        |          }t          j                            dd          |          }t          j        ||          }t          |dd          S )z.A subclass model nested in a functional model.r
   rN   r   r   r   r   r   )rx   r   r&   r   r   r   r)   r   )r   r*   r,   r-   r   s        r   %nested_subclassed_in_functional_modelr      s    *,,[t$$$FV$$A''))!,,Al  y 99!<<GK((E5)Y///r   c                  p    d  G fddt           j                  } t           |             dd          S )z.A functional model nested in a subclass model.c                  B   t          j        d          } t          j                            dd          |           }t          j                                        |          }t          j                            d          |          }t          j        | |          S )N)r%   rN   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   s    4(((LqV44V<<L++--a0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                            dd          | _        t          j                            dd          | _                     | _        d S )N%nested_functional_in_subclassed_modelr{   r%   r	   r   r   )r~   r   r   r   r   r   r   inner_functional_model)r   r   r   s    r   r   zWnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel.__init__   sn    GG"IJJJ,,,Q6,BBDK,,,Q6,BBDK*>*>*@*@D'''r   c                     |                      |          }|                     |          }|                     |          S r6   )r   r   r   r   s      r   r   zSnested_functional_in_subclassed_model.<locals>.NestedFunctionalInSubclassModel.call   s6    F##A++A..A;;q>>!r   r   )r   r   s   @r   NestedFunctionalInSubclassModelr      sY        44	A 	A 	A 	A 	A 	A	" 	" 	" 	" 	" 	" 	"r   r   r   r   r   )r   r   s    @r   r   r      sf    , , ," " " " " " "%+ " " " 2244iKKKr   c                  d     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                            dd          | _        t          j                            d          | _        t          j                                        | _	        d S )Nshared_layer_subclass_modelr{   r   r	   r   r}   )
r~   r   r   r   r   denser   r   r   r   r   s    r   r   zHshared_layer_subclassed_model.<locals>.SharedLayerSubclassModel.__init__  sk    GG"?@@@++A&+AADJl**3//DGl5577DGGGr   c                     |                      |          }|                     |          }|                     |          }|                      |          S r6   )r   r   r   r   s      r   r   zDshared_layer_subclassed_model.<locals>.SharedLayerSubclassModel.call  sA    

6""A

A

A::a== r   r   r   s   @r   SharedLayerSubclassModelr     sM        22	8 	8 	8 	8 	8	! 	! 	! 	! 	! 	! 	!r   r   r   r   )r   s    r   shared_layer_subclassed_modelr      sL    ! ! ! ! !5; ! ! ! ++--y)DDDr   c                  f   t          j        d          } t          j                            d          |           }t          j                                        |          }t          j                            d          |          }t          j        | |dd          }t          |dd	          S )
z%A functional model with keyword args.r
   rN   r%   r   mF)r:   	trainabler   r   )r   r&   r   r   r   r)   r   r3   s       r   functional_with_keyword_argsr     s    [t$$$F1f%%A''))!,,Al  ##A&&GKcUCCCE5)Y///r   r   r   r.   r4   rL   rP   r`   rn   rv   r   r   r   r   r   c                 .      fdt           D             }|S )z,Get all models excluding the specified ones.c                 (    g | ]}|d          v|S )r   r   )r!   r   exclude_modelss     r   r#   zget_models.<locals>.<listcomp>:  s'    NNNuQx~/M/Me/M/M/Mr   )
ALL_MODELS)r   modelss   ` r   
get_modelsr   8  s!    NNNNNNNFMr   r6   )r   collectionsr   
namedtupler   r   r   r.   r4   rL   rP   r`   rn   rv   r)   rx   r   r   r   r   r   r   r   r   r   r   <module>r      s   9 8      !+
 777 
0 0 00 0 03 3 33 3 3J J J$0 0 0   4K K K.I I I$    ek   2@ @ @,0 0 0L L L6E E E*0 0 0 )* ";<K TN!9:&(GH: 78+, 78/-
 	0- %&CD#%AB)
0     r   