B
    ӻd                 @   sJ  d 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 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 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ee	e
eeeeeeeefZeefZe add Zeddd Z eddddZ!dS )z/Layer serialization/deserialization functions.
    N)tf2)
base_layer)input_layer)
input_spec)advanced_activations)convolutional)convolutional_recurrent)core)cudnn_recurrent)dense_attention)
embeddings)merge)pooling)	recurrent)recurrent_v2)rnn_cell_wrapper_v2)generic_utils)
tf_inspect)keras_exportc                 s,  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	tjt
 fddd t rtj	tjt fddd ddlm}  tjtjd	< tjtjd
< | jtjd< | jtjd< | 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< dS )z8Populates dict ALL_OBJECTS with every built-in layer.
  ALL_OBJECTSNc                s   t | ot|  S )N)inspectisclass
issubclass)x)base_cls ^/var/www/html/venv/lib/python3.7/site-packages/tensorflow/python/keras/layers/serialization.py<lambda>G       z1populate_deserializable_objects.<locals>.<lambda>)Z
obj_filterc                s   t | ot|  S )N)r   r   r   )r   )r   r   r   r   N   r   r   )modelsInput	InputSpec
FunctionalModel
Sequentialaddsubtractmultiplyaveragemaximumminimumconcatenatedot)hasattrLOCALr   ZGENERATED_WITH_V2r   enabledr   ZLayerr   Z!populate_dict_with_module_objectsALL_MODULESALL_V2_MODULESZtensorflow.python.kerasr   r   r    r   r!   r"   r#   r$   r   r%   r&   r'   r(   r)   r*   r+   r,   )r   r   )r   r   populate_deserializable_objects3   s>    

r2   zkeras.layers.serializec             C   s
   t | S )N)r   Zserialize_keras_object)layerr   r   r   	serialized   s    r4   zkeras.layers.deserializec             C   s   t   tj| tj|ddS )aJ  Instantiates a layer from a config dictionary.

  Args:
      config: dict of the form {'class_name': str, 'config': dict}
      custom_objects: dict mapping class names (or function names)
          of custom (non-Keras) objects to class/functions

  Returns:
      Layer instance (may be Model, Sequential, Network, Layer...)
  r3   )Zmodule_objectscustom_objectsZprintable_module_name)r2   r   Zdeserialize_keras_objectr.   r   )configr5   r   r   r   deserializei   s    r7   )N)"__doc__	threadingZtensorflow.pythonr   Ztensorflow.python.keras.enginer   r   r   Ztensorflow.python.keras.layersr   r   r   r	   r
   r   r   r   r   r   r   r   Ztensorflow.python.keras.utilsr   r   r   Z tensorflow.python.util.tf_exportr   r0   r1   localr.   r2   r4   r7   r   r   r   r   <module>   s:   1