
    Ng                     f    d dl Z d dl mZ  G d dej                  Z G d dej                  ZdS )    N)nnc            	       ^     e Zd ZdZ	 	 ddedededdf fd	Zd
ej	        dej	        fdZ
 xZS )
LayerScalez6 LayerScale on tensors with channels in last-dim.
    h㈵>Fdiminit_valuesinplacereturnNc                     t                                                       || _        t          j        |t          j        |          z            | _        d S Nsuper__init__r	   r   	Parametertorchonesgammaselfr   r   r	   	__class__s       S/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/layer_scale.pyr   zLayerScale.__init__   D     	\+
3"?@@


    xc                 X    | j         r|                    | j                  n	|| j        z  S r   )r	   mul_r   )r   r   s     r   forwardzLayerScale.forward   s(    %)\Eqvvdj!!!q4:~Er   r   F)__name__
__module____qualname____doc__intfloatboolr   r   Tensorr   __classcell__r   s   @r   r   r      s         
 "&!	A AA A 	A
 
A A A A A AF F%, F F F F F F F Fr   r   c                   <     e Zd ZdZ	 	 d	dededef fdZd Z xZ	S )
LayerScale2dz7 LayerScale for tensors with torch 2D NCHW layout.
    r   Fr   r   r	   c                     t                                                       || _        t          j        |t          j        |          z            | _        d S r   r   r   s       r   r   zLayerScale2d.__init__   r   r   c                 ~    | j                             dddd          }| j        r|                    |          n||z  S )N   )r   viewr	   r   )r   r   r   s      r   r   zLayerScale2d.forward#   s:    
2q!,, $;qvve}}}!e);r   r   )
r   r    r!   r"   r#   r$   r%   r   r   r'   r(   s   @r   r*   r*      s         
 "&!	A AA A 	A A A A A A< < < < < < <r   r*   )r   r   Moduler   r*    r   r   <module>r2      s          F F F F F F F F"< < < < <29 < < < < <r   