
    2Vh                          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e             Z
 ed	       G d
 de             Z ed       G d de             Z ed       G d de             Zy)zPLegacy Keras 1/2 layers.

AlphaDropout
RandomHeight
RandomWidth
ThresholdedReLU
    )backend)keras_export)Layer)
tensorflowz!keras._legacy.layers.AlphaDropoutc                   <     e Zd ZdZd fd	ZddZ fdZd Z xZS )AlphaDropoutDEPRECATED.c                     t        |   di | || _        || _        || _        t
        j                  j                  |      | _        d| _	        d| _
        y )NT )super__init__rateseednoise_shaper   randomSeedGeneratorseed_generatorsupports_maskingbuilt)selfr   r   r   kwargs	__class__s        G/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/legacy/layers.pyr   zAlphaDropout.__init__   sO    "6"		&%nn::4@ $
    c                    |r| j                   dkD  rd}d}| |z  }| j                  t        j                  |      }n| j                  }t        j                  t
        j                  j                  || j                        | j                         }t        j                  ||j                        }d| j                   z
  d| j                   |dz  z  z   z  dz  }| |z  | j                   z  }	||z  |d|z
  z  z   }
||
z  |	z   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xs              r   callzAlphaDropout.call   s   		A5E5EfunG' hhv."..''&&{9L9L&M		H wwx6H dii-A		GQJ(>$>?DHAWtyy(A !Gq8|$<<A q519r   c                 ^    | j                   | j                  d}t        |          }i ||S )N)r   r   )r   r   r   
get_configr   configbase_configr   s      r   r/   zAlphaDropout.get_config7   s2    ))TYY7g(*(+(((r   c                     |S Nr   r   input_shapes     r   compute_output_shapez!AlphaDropout.compute_output_shape<       r   )NN)F	__name__
__module____qualname____doc__r   r-   r/   r7   __classcell__r   s   @r   r   r      s    6)
r   r   z!keras._legacy.layers.RandomHeightc                   <     e Zd ZdZd fd	ZddZd Z fdZ xZS )RandomHeightr	   c                    t        |   di | t        j                  j	                  |      | _        || _        t        |t        t        f      r|d   | _
        |d   | _        n| | _
        || _        | j                  | j                  k  rt        d|       | j                  dk  s| j                  dk  rt        d|       || _        || _        y )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   rE   rL   r   r   r   s        r   r   zRandomHeight.__init__D   s    "6"%nn::4@fudm, &q	D &q	D!'D &Dt000117:  t#t'8'84'?$$*8-  +	r   c                 h     t        j                  | j                        } fd}|r ||      S |S )Nr#   c                    t        j                  |       }t        j                  |d   t         j                        }|d   }t        j
                  j                  g d	j                  z   d	j                  z   	j                        }t        j                  ||z  t         j                        }t        j                  ||g      }t         j                  j                  | |	j                        }t        j                  |	j                        }| j                  j!                         }d|d<   |j#                  |       |S )z'Inputs height-adjusted with random ops.      ?r   minvalmaxvalr   imagessizemethodN)r   r   r"   float32r   r   r!   rI   rJ   r   int32stackimageresizerL   compute_dtypeas_list	set_shape)
r$   inputs_shapeimg_hdimg_wdheight_factoradjusted_heightadjusted_sizeoutputoutput_shaper   s
            r   random_height_inputsz/RandomHeight.call.<locals>.random_height_inputs_   s   88F+LWW\"-rzz:F!"%F#NN22d///d///((	 3 M !ggmf&<bhhGOHHov%>?MXX__")) % F WWVT%7%78F!<<//1L#L\*Mr   r   convert_to_tensorr`   )r   r$   r%   rk   s   `   r   r-   zRandomHeight.call\   s5    %%fD4F4FG	2 '//Mr   c                 8    t        |      }d |d<   t        |      S )NrQ   rH   rG   r5   s     r   r7   z!RandomHeight.compute_output_shape}        ;'B[!!r   c                 t    | j                   | j                  | j                  d}t        |          }i ||S N)rE   rL   r   rE   rL   r   r   r/   r0   s      r   r/   zRandomHeight.get_config   @    kk!//II

 g(*(+(((r   bilinearNT	r:   r;   r<   r=   r   r-   r7   r/   r>   r?   s   @r   rA   rA   @   s     0B"
) )r   rA   z keras._legacy.layers.RandomWidthc                   <     e Zd ZdZd fd	ZddZd Z fdZ xZS )RandomWidthr	   c                    t        |   di | t        j                  j	                  |      | _        || _        t        |t        t        f      r|d   | _
        |d   | _        n| | _
        || _        | j                  | j                  k  rt        d|       | j                  dk  s| j                  dk  rt        d|       || _        || _        y )Nr   r   zY`factor` argument cannot have an upper bound less than the lower bound. Received: factor=rC   rD   r   )r   r   r   r   r   r   rE   rF   rG   rH   width_lowerwidth_upperrK   rL   r   rM   s        r   r   zRandomWidth.__init__   s    "6"%nn::4@fudm,%ayD%ayD &wD%Dd...117:  d"d&6&6&=$$*8-  +	r   c                 h     t        j                  | j                        } fd}|r ||      S |S )NrO   c                    t        j                  |       }|d   }t        j                  |d   t         j                        }t        j
                  j                  g d	j                  z   d	j                  z   	j                        }t        j                  ||z  t         j                        }t        j                  ||g      }t         j                  j                  | |	j                        }t        j                  |	j                        }| j                  j!                         }d|d<   |j#                  |       |S )z&Inputs width-adjusted with random ops.rQ   rR   rS   rT   rW   N)r   r   r"   r[   r   r   r!   r|   r}   r   r\   r]   r^   r_   rL   r`   ra   rb   )
r$   rc   rd   re   width_factoradjusted_widthrh   ri   rj   r   s
            r   random_width_inputsz-RandomWidth.call.<locals>.random_width_inputs   s   88F+L!"%FWW\"-rzz:F">>11d...d...((	 2 L  WW\F%:BHHENHHfn%=>MXX__")) % F WWVT%7%78F!<<//1L#L\*Mr   rl   )r   r$   r%   r   s   `   r   r-   zRandomWidth.call   s5    %%fD4F4FG	2 &v..Mr   c                 8    t        |      }d |d<   t        |      S )NrR   ro   r5   s     r   r7   z RandomWidth.compute_output_shape   rp   r   c                 t    | j                   | j                  | j                  d}t        |          }i ||S rr   rs   r0   s      r   r/   zRandomWidth.get_config   rt   r   ru   rw   rx   r?   s   @r   rz   rz      s     .B"
) )r   rz   z$keras._legacy.layers.ThresholdedReLUc                   :     e Zd ZdZd fd	Zd Z fdZd Z xZS )ThresholdedReLUr	   c                     t        |   di | |t        d|       |dk  rt        d|       d| _        t	        j
                  || j                        | _        y )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: TrO   r   )r   r   rK   r   r   rm   r`   theta)r   r   r   r   s      r   r   zThresholdedReLU.__init__   s}    "6"=$$)7,  19,,174  !%))%t7I7IJ
r   c                     | j                   }|t        j                  t        j                  || j                        |      z  S r4   )r`   r   r"   greaterr   )r   r$   r#   s      r   r-   zThresholdedReLU.call   s2    ""

64:: >FFFr   c                 Z    dt        | j                        i}t        |          }i ||S )Nr   )floatr   r   r/   r0   s      r   r/   zThresholdedReLU.get_config   s3    5,-g(*(+(((r   c                     |S r4   r   r5   s     r   r7   z$ThresholdedReLU.compute_output_shape   r8   r   )rS   r9   r?   s   @r   r   r      s    KG)
r   r   N)r=   	keras.srcr   keras.src.api_exportr   keras.src.layers.layerr   keras.src.utils.module_utilsr   r   r   rA   rz   r   r   r   r   <module>r      s     - ( 9 12-5 - 3-` 12H)5 H) 3H)V 01G)% G) 2G)T 45e  6r   