
    |2g                     N    d dl mZmZ d dlmZmZ  G d dej                        Zy)    )CallableOptional)Tensornnc                        e Zd Zddej                  ddfdedee   dee   dedej                  f   d	e	d
e
ddf fdZdedefdZ xZS )MlpNg        Tin_featureshidden_featuresout_features	act_layer.dropbiasreturnc                     t         |           |xs |}|xs |}t        j                  |||      | _         |       | _        t        j                  |||      | _        t        j                  |      | _        y )N)r   )	super__init__r   Linearfc1actfc2Dropoutr   )selfr	   r
   r   r   r   r   	__class__s          G/home/cameronsmith/repos/FeatUp/featup/featurizers/dinov2/layers/mlp.pyr   zMlp.__init__   se     	#2{)8[99[/E;99_lFJJt$	    xc                     | j                  |      }| j                  |      }| j                  |      }| j                  |      }| j                  |      }|S )N)r   r   r   r   )r   r   s     r   forwardzMlp.forward"   sH    HHQKHHQKIIaLHHQKIIaLr   )__name__
__module____qualname__r   GELUintr   r   Modulefloatboolr   r   r   __classcell__)r   s   @r   r   r      s     *.&*.0gg%% "#% sm	%
 CN+% % % 
%" F r   r   N)typingr   r   torchr   r   r$   r    r   r   <module>r+      s    & ")) r   