a
    þdï  ã                   @   sd   d dl Z d dlmZ G dd„ dejƒZe jjG dd„ dƒƒ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__© úc/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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ejdœdd„ZdS )ÚSpaceToDepthJit)r   c                 C   sd   |  ¡ \}}}}| |||d d|d d¡}| dddddd¡ ¡ }| ||d |d |d ¡}|S )Nr   r   r   r   r   r   é   )r   r   r   r   r   r   r   r   Ú__call__   s
    zSpaceToDepthJit.__call__N)r   r    r!   r"   ZTensorr*   r   r   r   r   r(      s   r(   c                       s&   e Zd Zd‡ fdd„	Zdd„ Z‡  ZS )ÚSpaceToDepthModuleFc                    s$   t ƒ  ¡  |stƒ | _ntƒ | _d S ©N)r   r   r(   Úopr   )r	   Zno_jitr   r   r   r   !   s    

zSpaceToDepthModule.__init__c                 C   s
   |   |¡S r,   )r-   )r	   r   r   r   r   r   (   s    zSpaceToDepthModule.forward)F©r   r    r!   r   r   r'   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 r,   r   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   2   s
    "&zDepthToSpace.forwardr.   r   r   r   r   r/   ,   s   r/   )
r"   Ztorch.nnÚnnÚModuler   r#   Úscriptr(   r+   r/   r   r   r   r   Ú<module>   s   
