o
    {i                     @   s:   d dl mZ d dlZd dlmZmZ G dd dejZdS )    )UnionN)Tensornnc                	       sX   e Zd Z			ddedeeef deddf fdd	Zd
d Z	dedefddZ
  ZS )
LayerScaleh㈵>FNdiminit_valuesinplacereturnc                    s0   t    || _ttj||d| _|| _d S )N)device)	super__init__r	   r   	Parametertorchemptygammar   )selfr   r   r	   r   	__class__ E/data/cameron/keygrip/volume_dino_tracks/dinov3/layers/layer_scale.pyr      s   

zLayerScale.__init__c                 C   s   t j| j| j d S N)r   init	constant_r   r   )r   r   r   r   reset_parameters   s   zLayerScale.reset_parametersxc                 C   s   | j r	|| jS || j S r   )r	   mul_r   )r   r   r   r   r   forward   s   zLayerScale.forward)r   FN)__name__
__module____qualname__intr   floatr   boolr   r   r   __classcell__r   r   r   r   r      s    
r   )typingr   r   r   r   Moduler   r   r   r   r   <module>   s   