
    ^j                     l    d dl Z d dl mZ  G d dej                        Z G d dej                        Zy)    N)nnc            	       |     e Zd ZdZ	 	 	 	 ddedededdf fdZd Zd	e	j                  de	j                  fd
Z xZS )
LayerScalez6 LayerScale on tensors with channels in last-dim.
    Ndiminit_valuesinplacereturnc                     t         |           || _        || _        t	        j
                  t        j                  |||            | _        | j                          y N)devicedtype
super__init__r   r   r   	Parametertorchemptygammareset_parametersselfr   r   r   r   r   	__class__s         b/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/layer_scale.pyr   zLayerScale.__init__   H     	&\\%++c&"NO
    c                     t         j                  j                  j                  | j                  | j
                         y Nr   r   init	constant_r   r   r   s    r   r   zLayerScale.reset_parameters   $    

D,<,<=r   xc                 n    | j                   r|j                  | j                        S || j                  z  S r   )r   mul_r   )r   r#   s     r   forwardzLayerScale.forward   s(    %)\\qvvdjj!Eq4::~Er   gh㈵>FNN)__name__
__module____qualname____doc__intfloatboolr   r   r   Tensorr&   __classcell__r   s   @r   r   r      sd    
 "&!     	  
 >F F%,, Fr   r   c                   F     e Zd ZdZ	 	 	 	 ddededef fdZd Zd Z	 xZ
S )	LayerScale2dz7 LayerScale for tensors with torch 2D NCHW layout.
    r   r   r   c                     t         |           || _        || _        t	        j
                  t        j                  |||            | _        | j                          y r   r   r   s         r   r   zLayerScale2d.__init__!   r   r   c                     t         j                  j                  j                  | j                  | j
                         y r   r   r!   s    r   r   zLayerScale2d.reset_parameters0   r"   r   c                     | j                   j                  dddd      }| j                  r|j                  |      S ||z  S )N   )r   viewr   r%   )r   r#   r   s      r   r&   zLayerScale2d.forward3   s7    

2q!, $qvve};!e);r   r'   )r(   r)   r*   r+   r,   r-   r.   r   r   r&   r0   r1   s   @r   r3   r3      sA    
 "&!     	 ><r   r3   )r   r   Moduler   r3    r   r   <module>r<      s-     F F2<299 <r   