B
    )`7                 @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
 ddl	mZ dd	lmZ dd
lmZ ddlmZ ddlmZ e add Ze  e tj eddd ZeddddZeddd ZdS )z3Keras initializer serialization / deserialization.
    )absolute_import)division)print_functionN)tf2)initializers_v1)initializers_v2)generic_utils)init_ops)
tf_inspect)keras_exportc                 sT  t tdsi t_dt_tjr.tjt kr.dS i t_t t_tjtjd< tjtjd< tj	tjd< tj
tjd< tjtjd< tjtjd< tjtjd	< tjtjd
< tjtjd< tjtjd< tjtjd< tjtjd< tjtjd< tjtjd< tjtjd< tjtjd< tj	tjd< tj
tjd< tjtjd< tjtjd< tjtjd< t ri } tj tj| tg fddd x|  D ]$\}}|tj|< |tjt|< qrW nttjtjtj	tjtjtjtjtjtj
tjtjtjtjtjtjd}x0| D ]$\}}|tj|< |tjt|< qW tjd tjd< tjd tjd< tjd  tjd!< tjd" tjd#< dS )$z>Populates dict ALL_OBJECTS with every built-in initializer.
  ALL_OBJECTSNZ
ConstantV2ZGlorotNormalV2ZGlorotUniformV2Z
HeNormalV2ZHeUniformV2Z
IdentityV2ZLecunNormalV2ZLecunUniformV2ZOnesV2ZOrthogonalV2ZRandomNormalV2ZRandomUniformV2ZTruncatedNormalV2ZVarianceScalingV2ZZerosV2Zglorot_normalV2Zglorot_uniformV2Zhe_normalV2Zhe_uniformV2Zlecun_normalV2Zlecun_uniformV2c                s   t | ot|  S )N)inspectisclass
issubclass)x)base_cls \/home/dcms/DCMS/lib/python3.7/site-packages/tensorflow/python/keras/initializers/__init__.py<lambda>X       z1populate_deserializable_objects.<locals>.<lambda>)Z
obj_filter)ConstantGlorotNormalGlorotUniformIdentityOnes
OrthogonalVarianceScalingZerosHeNormal	HeUniformLecunNormalLecunUniformRandomNormalRandomUniformTruncatedNormalZrandom_normalnormalZrandom_uniformuniformZonesZonezerosZzero)hasattrLOCALr   ZGENERATED_WITH_V2r   Zenabledr   r   r   r   r   r   r   r    r!   r   r   r"   r#   r$   r   r   ZInitializerr   Z!populate_dict_with_module_objectsitemsZto_snake_caser	   r   )Zv2_objskeyvalueZv1_objsr   )r   r   populate_deserializable_objects&   sx    





r-   zkeras.initializers.serializec             C   s
   t | S )N)r   Zserialize_keras_object)initializerr   r   r   	serialize   s    r/   zkeras.initializers.deserializec             C   s   t   tj| tj|ddS )z/Return an `Initializer` object from its config.r.   )Zmodule_objectscustom_objectsZprintable_module_name)r-   r   Zdeserialize_keras_objectr)   r   )configr0   r   r   r   deserialize   s    r2   zkeras.initializers.getc             C   sZ   | d krd S t | trt| S t | tjr:t| } t| S t| rF| S tdt|  d S )Nz,Could not interpret initializer identifier: )
isinstancedictr2   sixstring_typesstrcallable
ValueError)
identifierr   r   r   get   s    
r;   )N)__doc__
__future__r   r   r   	threadingr5   Ztensorflow.pythonr   Z$tensorflow.python.keras.initializersr   r   Ztensorflow.python.keras.utilsr   Ztensorflow.python.opsr	   Ztensorflow.python.utilr
   r   Z tensorflow.python.util.tf_exportr   localr)   r-   globalsupdater   r/   r2   r;   r   r   r   r   <module>   s(   Y
