o
    ÓÙ¾i,  ã                   @   s<   d dl Z d dlmZ G dd„ dejƒZG dd„ dejƒZdS )é    Nc                       s8   e Zd ZU ejje ed< d‡ fdd„	Zdd„ Z	‡  Z
S )ÚSpaceToDepthÚbsé   c                    s    t ƒ  ¡  |dksJ ‚|| _d S )Nr   ©ÚsuperÚ__init__r   ©ÚselfÚ
block_size©Ú	__class__© úN/home/ubuntu/.local/lib/python3.10/site-packages/timm/layers/space_to_depth.pyr      s   

zSpaceToDepth.__init__c                 C   sx   |  ¡ \}}}}| |||| j | j|| j | j¡}| dddddd¡ ¡ }| ||| j | j || j || j ¡}|S )Nr   é   é   é   é   r   ©ÚsizeÚviewr   ÚpermuteÚ
contiguous©r	   ÚxÚNÚCÚHÚWr   r   r   Úforward   s
   $(zSpaceToDepth.forward)r   )Ú__name__Ú
__module__Ú__qualname__ÚtorchÚjitÚFinalÚintÚ__annotations__r   r   Ú__classcell__r   r   r   r   r      s   
 r   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚDepthToSpacec                    s   t ƒ  ¡  || _d S )Nr   r   r   r   r   r      s   

zDepthToSpace.__init__c                 C   st   |  ¡ \}}}}| || j| j|| jd  ||¡}| dddddd¡ ¡ }| ||| jd  || j || j ¡}|S )Nr   r   r   r   r   r   r   r   r   r   r   r      s
   "&zDepthToSpace.forward)r   r    r!   r   r   r'   r   r   r   r   r(      s    r(   )r"   Útorch.nnÚnnÚModuler   r(   r   r   r   r   Ú<module>   s    