
    6biY#                     p   S r SSKrSSKrSSKJs  Jr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \R2                  " 5       qS r\" 5         \" 5       R;                  [4        R<                  5        \" S5      SS j5       r\" S5      SS j5       r \" S5      S 5       r!g)z2Keras initializer serialization / deserialization.    N)initializers)initializers_v1)serialization_lib)serialization)generic_utils)
tf_inspect)tf2)init_ops)keras_exportc                  &  ^ [        [        S5      (       d  0 [        l        S[        l        [        R                  (       a;  [        R                  [        R
                  R                  R                  5       :X  a  g0 [        l        [        R
                  R                  R                  5       [        l        [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S	'   [        R                   [        R                  S
'   [        R"                  [        R                  S'   [        R$                  [        R                  S'   [        R&                  [        R                  S'   [        R(                  [        R                  S'   [        R*                  [        R                  S'   [        R,                  [        R                  S'   [        R.                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                  [        R                  S'   [        R                   [        R                  S'   [        R
                  R                  R                  5       (       a  0 n [        R0                  m[2        R4                  " U [        /U4S jS9  U R7                  5        H?  u  pU[        R                  U'   U[        R                  [2        R8                  " U5      '   MA     GO[        R:                  R<                  R>                  [        R:                  R<                  R@                  [        R:                  R<                  RB                  [        R:                  R<                  R                  RD                  [        R:                  R<                  RF                  [        R:                  R<                  RH                  [        R:                  R<                  RJ                  [        R:                  R<                  RL                  [N        R                  [N        R                  [N        R                  [N        R                   [N        R&                  [N        R(                  [N        R*                  S.nUR7                  5        H?  u  pU[        R                  U'   U[        R                  [2        R8                  " U5      '   MA     [        R                  S   [        R                  S'   [        R                  S   [        R                  S'   [        R                  S   [        R                  S '   [        R                  S!   [        R                  S"'   g)#z;Populates dict ALL_OBJECTS with every built-in initializer.ALL_OBJECTSN
ConstantV2GlorotNormalV2GlorotUniformV2
HeNormalV2HeUniformV2
IdentityV2LecunNormalV2LecunUniformV2OnesV2OrthogonalV2RandomNormalV2RandomUniformV2TruncatedNormalV2VarianceScalingV2ZerosV2glorot_normalV2glorot_uniformV2he_normalV2he_uniformV2lecun_normalV2lecun_uniformV2c                 V   > [         R                  " U 5      =(       a    [        U T5      $ )N)inspectisclass
issubclass)xbase_clss    \/home/james-whalen/.local/lib/python3.13/site-packages/tf_keras/src/initializers/__init__.py<lambda>1populate_deserializable_objects.<locals>.<lambda>\   s    !3!O
1h8O!O    )
obj_filter)ConstantGlorotNormalGlorotUniformIdentityOnes
OrthogonalVarianceScalingZerosHeNormal	HeUniformLecunNormalLecunUniformRandomNormalRandomUniformTruncatedNormalrandom_normalnormalrandom_uniformuniformonesonezeroszero)(hasattrLOCALr   GENERATED_WITH_V2tf__internal__r	   enabledr   r.   r/   r0   r6   r7   r1   r8   r9   r2   r3   r:   r;   r<   r4   r5   Initializerr   !populate_dict_with_module_objectsitemsto_snake_casecompatv1constant_initializerglorot_normal_initializerglorot_uniform_initializeridentityones_initializerorthogonal_initializervariance_scaling_initializerzeros_initializerr   )v2_objskeyvaluev1_objsr(   s       @r)   populate_deserializable_objectsr]   '   sZ    5-(("& 	##r':':'B'B'DD 	E oo1199;E '3&;&;El#*6*C*CE&'+7+E+EE'(&2&;&;El#'3'='=Em$&2&;&;El#)5)A)AEo&*6*C*CE&'"."3"3Eh(4(?(?En%*6*C*CE&'+7+E+EE'(-9-I-IE)*-9-I-IE)*#/#5#5Ei 
 ,8+D+DE'(,8,F,FE()'3'<'<Em$(4(>(>En%*6*B*BE&'+7+D+DE'(	""$$ ++77NO	

 "--/JC%*Ec"BGEm99#>? * 		99IILLBBYY\\DD		11::IILL11)),,==!yy||HHYY\\33'00(22*66+88+88,::.>>
" "--/JC%*Ec"BGEm99#>? * #("3"3O"DEh#(#4#45E#FEi $008Ee % 1 1' :Efr,   zkeras.initializers.serializec                 6   [        5         U c  g [        U [        [        R                  R                  5       5      5      (       d#  [        R                  " S[        U 5       S35        U(       a  [        R                  " U 5      $ [        R                  " U 5      $ )NzThe `keras.initializers.serialize()` API should only be used for objects of type `keras.initializers.Initializer`. Found an instance of type z+, which may lead to improper serialization.)r]   
isinstancetuplerF   r   valueswarningswarntypelegacy_serializationserialize_keras_objectr   )initializeruse_legacy_formats     r)   	serializeri      s    #%k5):):)A)A)C#DEE  $[ 12 3	
 #::;GG33K@@r,   zkeras.initializers.deserializec                     [        5         U(       a%  [        R                  " U [        R                  USS9$ [
        R                  " U [        R                  USS9$ )z/Return an `Initializer` object from its config.rg   )module_objectscustom_objectsprintable_module_name)r]   re   deserialize_keras_objectrF   r   r   )configrl   rh   s      r)   deserializerp      sY     $%#<< ,,)"/	
 	
 55((%+	 r,   zkeras.initializers.getc                 B   U c  g[        U [        5      (       a  SU ;  n[        XS9$ [        U [        5      (       a  [        U 5      0 S.n[	        U5      $ [        U 5      (       a$  [        R                  " U 5      (       a  U " 5       n U $ [        S[        U 5      -   5      e)a  Retrieve a TF-Keras initializer by the identifier.

The `identifier` may be the string name of a initializers function or class
(case-sensitively).

>>> identifier = 'Ones'
>>> tf.keras.initializers.deserialize(identifier)
<...keras.initializers.initializers.Ones...>

You can also specify `config` of the initializer to this function by passing
dict containing `class_name` and `config` as an identifier. Also note that
the `class_name` must map to a `Initializer` class.

>>> cfg = {'class_name': 'Ones', 'config': {}}
>>> tf.keras.initializers.deserialize(cfg)
<...keras.initializers.initializers.Ones...>

In the case that the `identifier` is a class, this method will return a new
instance of the class by its constructor.

Args:
  identifier: String or dict that contains the initializer name or
    configurations.

Returns:
  Initializer instance base on the input identifier.

Raises:
  ValueError: If the input identifier is not a supported type or in a bad
    format.
Nmodule)rh   )
class_namero   z,Could not interpret initializer identifier: )	r_   dictrp   strgetcallabler$   r%   
ValueError)
identifierrh   ro   s      r)   rv   rv      s    D *d##$J6:KK	J	$	$ #J2>6{	*		??:&&#J:S_L
 	
r,   )F)NF)"__doc__	threadingrb   tensorflow.compat.v2rO   v2rH   tf_keras.src.initializersr   r   tf_keras.src.savingr   tf_keras.src.saving.legacyr   re   tf_keras.src.utilsr   r   r$   tensorflow.pythonr	   tensorflow.python.opsr
    tensorflow.python.util.tf_exportr   localrF   r]   globalsupdater   ri   rp   rv    r,   r)   <module>r      s    9   ! ! 2 5 1 L , 4 " * 9 	W;z   ! 	  "" #
 ,-A .A" ./ 0& &'0
 (0
r,   