a
    +=ic                     @   s   d Z ddlZddlm  mZ ddlZddlm	Z	 ddl
mZ dZdd ZG dd	 d	e	jZG d
d de	jZG dd dejZG dd de	jZG dd dejZG dd de	jZdS )z/A simple functional keras model with one layer.    N)model_collection_base)gradient_descent
   c                  C   sX   t jtjddt jd} t jtjddt jd}t jtjddt jd}| ||fS )Ni     dtype   )tfZconstantnprandomZrandfloat32)Zx_trainZy_trainZ	x_predict r   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/keras/distribute/simple_models.py_get_data_for_simple_models   s    r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SimpleFunctionalModelz)A simple functional model and its inputs.c                 K   s^   d}t jjdtjd}t jjdtj|d|}t j||d}tjdd}|j	d	d
g|d |S )Noutput_1)r   )shaper   r   )r   name)inputsoutputsMbP?Zlearning_ratemsemaelossmetrics	optimizer)
keraslayersZInputr	   r   DenseModelr   SGDcompile)selfkwargsoutput_namexymodelr   r   r   r   	get_model&   s    zSimpleFunctionalModel.get_modelc                 C   s   t  S Nr   r$   r   r   r   get_data2   s    zSimpleFunctionalModel.get_datac                 C   s   t S r+   _BATCH_SIZEr-   r   r   r   get_batch_size5   s    z$SimpleFunctionalModel.get_batch_sizeN__name__
__module____qualname____doc__r*   r.   r1   r   r   r   r   r   #   s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SimpleSequentialModelz)A simple sequential model and its inputs.c                 K   sN   d}t  }t jjdtj|dd}|| tjdd}|j	ddg|d	 |S )
Nr   r   r   )r   r   Z	input_dimr   r   r   r   r   )
r   Z
Sequentialr   r    r	   r   addr   r"   r#   )r$   r%   r&   r)   r(   r   r   r   r   r*   <   s    

zSimpleSequentialModel.get_modelc                 C   s   t  S r+   r,   r-   r   r   r   r.   I   s    zSimpleSequentialModel.get_datac                 C   s   t S r+   r/   r-   r   r   r   r1   L   s    z$SimpleSequentialModel.get_batch_sizeNr2   r   r   r   r   r7   9   s   r7   c                       s$   e Zd Z fddZdd Z  ZS )_SimpleModelc                    s"   t    tjjdtjd| _d S )Nr   r   )super__init__r   r   r    r	   r   _dense_layerr-   	__class__r   r   r;   Q   s    
z_SimpleModel.__init__c                 C   s
   |  |S r+   )r<   )r$   r   r   r   r   callU   s    z_SimpleModel.call)r3   r4   r5   r;   r?   __classcell__r   r   r=   r   r9   P   s   r9   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SimpleSubclassModelz%A simple subclass model and its data.c                 K   s*   t  }tjdd}|jddgd|d |S )Nr   r   r   r   F)r   r   Zcloningr   )r9   r   r"   r#   )r$   r%   r)   r   r   r   r   r*   \   s    
zSimpleSubclassModel.get_modelc                 C   s   t  S r+   r,   r-   r   r   r   r.   e   s    zSimpleSubclassModel.get_datac                 C   s   t S r+   r/   r-   r   r   r   r1   h   s    z"SimpleSubclassModel.get_batch_sizeNr2   r   r   r   r   rA   Y   s   	rA   c                   @   s"   e Zd Zdd Zejdd ZdS )_SimpleModulec                 C   s   t d| _d S )Ng      @)r	   Variablevr-   r   r   r   r;   m   s    z_SimpleModule.__init__c                 C   s
   | j | S r+   )rD   )r$   r'   r   r   r   __call__p   s    z_SimpleModule.__call__N)r3   r4   r5   r;   r	   functionrE   r   r   r   r   rB   l   s   rB   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SimpleTFModuleModelz/A simple model based on tf.Module and its data.c                 K   s
   t  }|S r+   )rB   )r$   r%   r)   r   r   r   r*   x   s    zSimpleTFModuleModel.get_modelc                 C   s   t  S r+   r,   r-   r   r   r   r.   |   s    zSimpleTFModuleModel.get_datac                 C   s   t S r+   r/   r-   r   r   r   r1      s    z"SimpleTFModuleModel.get_batch_sizeNr2   r   r   r   r   rG   u   s   rG   )r6   numpyr
   Ztensorflow.compat.v2compatv2r	   r   Zkeras.distributer   Zkeras.optimizers.optimizer_v2r   r0   r   ZModelAndInputr   r7   r!   r9   rA   ModulerB   rG   r   r   r   r   <module>   s   		