Ë
    éÓ^j,  ã                   ól   — d dl Z d dlmZ  G d„ dej                  «      Z G d„ dej                  «      Zy)é    Nc                   ój   ‡ — e Zd ZU dZej
                  j                  e   ed<   ddefˆ fd„Z	d„ Z
ˆ xZS )ÚSpaceToDepthzýRearrange spatial dimensions into channel dimension.

    Divides spatial dimensions by block_size and multiplies channels by block_size^2.
    Used in TResNet as an efficient stem operation.

    Args:
        block_size: Spatial reduction factor.
    ÚbsÚ
block_sizec                 ó>   •— t         ‰| �  «        |dk(  sJ ‚|| _        y )Né   ©ÚsuperÚ__init__r   ©Úselfr   Ú	__class__s     €úe/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/space_to_depth.pyr   zSpaceToDepth.__init__   s!   ø€ Ü‰ÑÔØ˜QŠÐˆØˆ�ó    c                 ó�  — |j                  «       \  }}}}|j                  |||| j                  z  | j                  || j                  z  | j                  «      }|j                  dddddd«      j	                  «       }|j                  ||| j                  z  | j                  z  || j                  z  || j                  z  «      }|S )Nr   é   é   é   é   r   ©ÚsizeÚviewr   ÚpermuteÚ
contiguous©r   ÚxÚNÚCÚHÚWs         r   ÚforwardzSpaceToDepth.forward   s    € Ø—V‘V“X‰
ˆˆ1ˆa�Ø�F‰F�1�a˜˜dŸg™g™ t§w¡w°°T·W±W±¸d¿g¹gÓFˆØ�I‰I�a˜˜A˜q ! QÓ'×2Ñ2Ó4ˆØ�F‰F�1�a˜$Ÿ'™'‘k D§G¡GÑ+¨Q°$·'±'©\¸1ÀÇÁ¹<ÓHˆØˆr   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚtorchÚjitÚFinalÚintÚ__annotations__r   r!   Ú__classcell__©r   s   @r   r   r      s.   ø… ñð 	�	‰	�‰˜ÑÓñ 3õ ö
r   r   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚDepthToSpacezæRearrange channel dimension into spatial dimensions.

    Inverse of SpaceToDepth. Divides channels by block_size^2 and multiplies
    spatial dimensions by block_size.

    Args:
        block_size: Spatial expansion factor.
    c                 ó0   •— t         ‰| �  «        || _        y )Nr	   r   s     €r   r   zDepthToSpace.__init__'   s   ø€ Ü‰ÑÔØˆ�r   c                 óh  — |j                  «       \  }}}}|j                  || j                  | j                  || j                  dz  z  ||«      }|j                  dddddd«      j	                  «       }|j                  ||| j                  dz  z  || j                  z  || j                  z  «      }|S )Nr   r   r   r   r   r   r   r   s         r   r!   zDepthToSpace.forward+   s™   € Ø—V‘V“X‰
ˆˆ1ˆa�Ø�F‰F�1�d—g‘g˜tŸw™w¨¨d¯g©g¸©lÑ(;¸QÀÓBˆØ�I‰I�a˜˜A˜q ! QÓ'×2Ñ2Ó4ˆØ�F‰F�1�a˜DŸG™G q™LÑ)¨1¨t¯w©w©;¸¸D¿G¹G¹ÓDˆØˆr   )r"   r#   r$   r%   r   r!   r+   r,   s   @r   r.   r.      s   ø„ ñôör   r.   )r&   Útorch.nnÚnnÚModuler   r.   © r   r   ú<module>r5      s+   ðÛ Ý ô�2—9‘9ô ô0�2—9‘9õ r   