o
    2h                      @   s   d Z ddlmZ ddlmZ ddlmZ ddlmZ	 edG dd deZ
ed	G d
d deZedG dd deZedG dd deZdS )zPLegacy Keras 1/2 layers.

AlphaDropout
RandomHeight
RandomWidth
ThresholdedReLU
    )backend)keras_export)Layer)
tensorflowz!keras._legacy.layers.AlphaDropoutc                       s@   e Zd ZdZd fdd	ZdddZ fdd	Zd
d Z  ZS )AlphaDropoutDEPRECATED.Nc                    sB   t  jdi | || _|| _|| _tj|| _d| _	d| _
d S )NT )super__init__rateseednoise_shaper   randomSeedGeneratorseed_generatorsupports_maskingbuilt)selfr   r   r   kwargs	__class__r   R/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/legacy/layers.pyr
      s   
zAlphaDropout.__init__Fc                 C   s   |r[| j dkr[d}d}| | }| jd u rt|}n| j}ttjj|| jd| j }t	||j
}d| j  d| j |d    d }| | | j  }	|| |d|   }
||
 |	 S |S )Nr   g,x?g2֫?)r         g      )r   r   tfshapegreater_equalr   r   uniformr   castdtype)r   inputstrainingalphascalealpha_pr   kept_idxabxr   r   r   call   s"   

 zAlphaDropout.callc                    s$   | j | jd}t  }i ||S )N)r   r   )r   r   r	   
get_configr   configbase_configr   r   r   r*   7      
zAlphaDropout.get_configc                 C      |S Nr   r   input_shaper   r   r   compute_output_shape<      z!AlphaDropout.compute_output_shape)NN)F	__name__
__module____qualname____doc__r
   r)   r*   r3   __classcell__r   r   r   r   r      s    
	r   z!keras._legacy.layers.RandomHeightc                       @   e Zd ZdZd fdd	ZdddZd	d
 Z fddZ  ZS )RandomHeightr   bilinearNc                       t  jdi | tj|| _|| _t|tt	fr%|d | _
|d | _n| | _
|| _| j| j
k r9td| | j
dk sC| jdk rJtd| || _|| _d S )Nr   r   z[`factor` argument cannot have an upper bound lesser than the lower bound. Received: factor=      D`factor` argument must have values larger than -1. Received: factor=r   )r	   r
   r   r   r   r   factor
isinstancetuplelistheight_lowerheight_upper
ValueErrorinterpolationr   r   rA   rH   r   r   r   r   r   r
   D   s,   

zRandomHeight.__init__Tc                    ,   t j| jd} fdd}|r||S |S )Nr   c           	         s   t | }t |d t j}|d }tjjg d j d j  j	d}t || t j
}t ||g}t jj| | jd}t | j}| j }d|d< || |S )z'Inputs height-adjusted with random ops.      ?r   minvalmaxvalr   imagessizemethodN)r   r   r   float32r   r   r   rE   rF   r   int32stackimageresizerH   compute_dtypeas_list	set_shape)	r    inputs_shapeimg_hdimg_wdheight_factoradjusted_heightadjusted_sizeoutputoutput_shaper   r   r   random_height_inputs_   s*   


z/RandomHeight.call.<locals>.random_height_inputsr   convert_to_tensorr[   )r   r    r!   rg   r   rf   r   r)   \   
   zRandomHeight.callc                 C      t |}d |d< t|S )NrL   rD   rC   r1   r   r   r   r3   }      z!RandomHeight.compute_output_shapec                    (   | j | j| jd}t  }i ||S N)rA   rH   r   rA   rH   r   r	   r*   r+   r   r   r   r*         
zRandomHeight.get_configr=   NT	r6   r7   r8   r9   r
   r)   r3   r*   r:   r   r   r   r   r<   @   s    
!r<   z keras._legacy.layers.RandomWidthc                       r;   )RandomWidthr   r=   Nc                    r>   )Nr   r   zY`factor` argument cannot have an upper bound less than the lower bound. Received: factor=r?   r@   r   )r	   r
   r   r   r   r   rA   rB   rC   rD   width_lowerwidth_upperrG   rH   r   rI   r   r   r   r
      s,   

zRandomWidth.__init__Tc                    rJ   )NrK   c           	         s   t | }|d }t |d t j}tjjg d j d j  j	d}t || t j
}t ||g}t jj| | jd}t | j}| j }d|d< || |S )z&Inputs width-adjusted with random ops.rL   rM   rN   rO   rR   N)r   r   r   rV   r   r   r   rv   rw   r   rW   rX   rY   rZ   rH   r[   r\   r]   )	r    r^   r_   r`   width_factoradjusted_widthrc   rd   re   rf   r   r   random_width_inputs   s*   


z-RandomWidth.call.<locals>.random_width_inputsrh   )r   r    r!   rz   r   rf   r   r)      rj   zRandomWidth.callc                 C   rk   )NrM   rl   r1   r   r   r   r3      rm   z RandomWidth.compute_output_shapec                    rn   ro   rp   r+   r   r   r   r*      rq   zRandomWidth.get_configrr   rs   rt   r   r   r   r   ru      s    
!ru   z$keras._legacy.layers.ThresholdedReLUc                       s>   e Zd ZdZd fdd	Zdd Z fddZd	d
 Z  ZS )ThresholdedReLUr   rN   c                    sZ   t  jdi | |d u rtd| |dk rtd| d| _tj|| jd| _d S )NzOTheta of a Thresholded ReLU layer cannot be None, expecting a float. Received: r   zEThe theta value of a Thresholded ReLU layer should be >=0. Received: TrK   r   )r	   r
   rG   r   r   ri   r[   theta)r   r|   r   r   r   r   r
      s   zThresholdedReLU.__init__c                 C   s    | j }|tt|| j| S r0   )r[   r   r   greaterr|   )r   r    r   r   r   r   r)      s   zThresholdedReLU.callc                    s$   dt | ji}t  }i ||S )Nr|   )floatr|   r	   r*   r+   r   r   r   r*      r.   zThresholdedReLU.get_configc                 C   r/   r0   r   r1   r   r   r   r3      r4   z$ThresholdedReLU.compute_output_shape)rN   r5   r   r   r   r   r{      s    r{   N)r9   	keras.srcr   keras.src.api_exportr   keras.src.layers.layerr   keras.src.utils.module_utilsr   r   r   r<   ru   r{   r   r   r   r   <module>   s    0KJ