§
    �ŠtjT  ã                   ó  — d dl Z d dlmc mZ d dlmZ ddlmZm	Z	 g d¢Z
 G d„ de	¦  «        Z G d„ d	e¦  «        Z G d
„ dee¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        ZdS )é    N)ÚTensoré   )Ú_LazyNormBaseÚ	_NormBase)ÚInstanceNorm1dÚInstanceNorm2dÚInstanceNorm3dÚLazyInstanceNorm1dÚLazyInstanceNorm2dÚLazyInstanceNorm3dc                   óˆ   ‡ — e Zd Z	 	 	 	 	 	 dddœdeded	ed
edededdfˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
	 	 dˆ fd„Zdedefd„Zˆ xZS )Ú_InstanceNormçñhãˆµøä>çš™™™™™¹?FNT)ÚbiasÚnum_featuresÚepsÚmomentumÚaffineÚtrack_running_statsr   Úreturnc                óV   •— ||dœ}	 t          ¦   «         j        |||||fi |	¤d|i¤Ž d S )N)ÚdeviceÚdtyper   )ÚsuperÚ__init__)Úselfr   r   r   r   r   r   r   r   Úfactory_kwargsÚ	__class__s             €ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/nn/modules/instancenorm.pyr   z_InstanceNorm.__init__   si   ø€ ð %+°UÐ;Ð;ˆØ�‰ŒÔØØØØØð	
ð 	
ð ð	
ð 	
ð ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ó    c                 ó   — t           ‚©N©ÚNotImplementedError©r   Úinputs     r    Ú_check_input_dimz_InstanceNorm._check_input_dim-   ó   € Ý!Ð!r!   c                 ó   — t           ‚r#   r$   ©r   s    r    Ú_get_no_batch_dimz_InstanceNorm._get_no_batch_dim0   r)   r!   c                 óx   — |                       |                     d¦  «        ¦  «                             d¦  «        S )Nr   )Ú_apply_instance_normÚ	unsqueezeÚsqueezer&   s     r    Ú_handle_no_batch_inputz$_InstanceNorm._handle_no_batch_input3   s0   € Ø×(Ò(¨¯ª¸Ñ);Ô);Ñ<Ô<×DÒDÀQÑGÔGÐGr!   c           
      ó    — t          j        || j        | j        | j        | j        | j        p| j         | j        �| j        nd| j	        ¦  «        S )Ng        )
ÚFÚinstance_normÚrunning_meanÚrunning_varÚweightr   Útrainingr   r   r   r&   s     r    r.   z"_InstanceNorm._apply_instance_norm6   sT   € ÝŒØØÔØÔØŒKØŒIØŒMÐ9 Ô!9Ð9Ø!œ]Ð6ˆDŒMˆM¸CØŒHñ	
ô 	
ð 		
r!   c           	      óÚ  •— |                      dd ¦  «        }|€ª| j        s£g }	dD ] }
||
z   }||v r|	                     |¦  «         Œ!t          |	¦  «        dk    rk|                     d                     d                     d„ |	D ¦   «         ¦  «        | j        j        ¬¦  «        ¦  «         |	D ]}|                     |¦  «         Œt          ¦   «          
                    |||||||¦  «         d S )NÚversion)r5   r6   r   a¤  Unexpected running stats buffer(s) {names} for {klass} with track_running_stats=False. If state_dict is a checkpoint saved before 0.4.0, this may be expected because {klass} does not track running stats by default since 0.4.0. Please remove these keys from state_dict. If the running stats are actually needed, instead set track_running_stats=True in {klass} to enable them. See the documentation of {klass} for details.z and c              3   ó"   K  — | ]
}d |› d �V — ŒdS )ú"N© )Ú.0Úks     r    ú	<genexpr>z6_InstanceNorm._load_from_state_dict.<locals>.<genexpr>_   s*   è è € Ð*PÐ*P¸¨8¨q¨8¨8¨8Ð*PÐ*PÐ*PÐ*PÐ*PÐ*Pr!   )ÚnamesÚklass)Úgetr   ÚappendÚlenÚformatÚjoinr   Ú__name__Úpopr   Ú_load_from_state_dict)r   Ú
state_dictÚprefixÚlocal_metadataÚstrictÚmissing_keysÚunexpected_keysÚ
error_msgsr:   Úrunning_stats_keysÚnameÚkeyr   s               €r    rJ   z#_InstanceNorm._load_from_state_dictB   s<  ø€ ð !×$Ò$ Y°Ñ5Ô5ˆð ˆ? 4Ô#;ˆ?Ø!#ÐØ7ð 3ð 3�Ø˜t‘m�Ø˜*Ð$Ð$Ø&×-Ò-¨cÑ2Ô2Ð2øÝÐ%Ñ&Ô&¨Ò*Ð*Ø×!Ò!ð@÷ AGÂØ%ŸlšlÐ*PÐ*PÐ=OÐ*PÑ*PÔ*PÑPÔPØ"œnÔ5ð AGñ Aô Añô ð ð .ð (ð (�CØ—N’N 3Ñ'Ô'Ð'Ð'å‰Œ×%Ò%ØØØØØØØñ	
ô 	
ð 	
ð 	
ð 	
r!   r'   c           
      ó  — |                       |¦  «         |                     ¦   «         |                      ¦   «         z
  }|                     |¦  «        | j        k    rR| j        r1t          d|› d| j        › d|                     |¦  «        › d�¦  «        ‚t          j        d|› d�d¬¦  «         |                     ¦   «         |                      ¦   «         k    r|  	                    |¦  «        S |  
                    |¦  «        S )	Nzexpected input's size at dim=z to match num_features (z), but got: ú.zinput's size at dim=z� does not match num_features. You can silence this warning by not passing in num_features, which is not used because affine=Falseé   )Ú
stacklevel)r(   Údimr,   Úsizer   r   Ú
ValueErrorÚwarningsÚwarnr1   r.   )r   r'   Úfeature_dims      r    Úforwardz_InstanceNorm.forwardp   s0  € Ø×Ò˜eÑ$Ô$Ð$à—i’i‘k”k D×$:Ò$:Ñ$<Ô$<Ñ<ˆØ�:Š:�kÑ"Ô" dÔ&7Ò7Ð7ØŒ{ð Ý ðS°Kð Sð SØÔ*ðSð SØ8=¿
º
À;Ñ8OÔ8OðSð Sð Sñô ð õ
 ”ð=¨;ð =ð =ð =ð  !ð	ñ ô ð ð �9Š9‰;Œ;˜$×0Ò0Ñ2Ô2Ò2Ð2Ø×.Ò.¨uÑ5Ô5Ð5à×(Ò(¨Ñ/Ô/Ð/r!   )r   r   FFNN©r   N)rH   Ú
__module__Ú__qualname__ÚintÚfloatÚboolr   r(   r,   r1   r.   rJ   r   r_   Ú__classcell__)r   s   @r    r   r      s3  ø€ € € € € ð ØØØ$)ØØð
ð ð
ð 
ð 
àð
ð ð
ð ð	
ð
 ð
ð "ð
ð ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð."ð "ð "ð"ð "ð "ðHð Hð Hð

ð 

ð 

ð,
ð 
ð,
ð ,
ð ,
ð ,
ð ,
ð ,
ð\0˜Vð 0¨ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r!   r   c                   ó&   — e Zd ZdZdefd„Zdd„ZdS )r   a‡  Applies Instance Normalization.

    This operation applies Instance Normalization
    over a 2D (unbatched) or 3D (batched) input as described in the paper
    `Instance Normalization: The Missing Ingredient for Fast Stylization
    <https://arxiv.org/abs/1607.08022>`__.

    .. math::

        y = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta

    The mean and standard-deviation are calculated per-dimension separately
    for each object in a mini-batch. :math:`\gamma` and :math:`\beta` are learnable parameter vectors
    of size `C` (where `C` is the number of features or channels of the input) if :attr:`affine` is ``True``.
    The variance is calculated via the biased estimator, equivalent to
    `torch.var(input, correction=0)`.

    By default, this layer uses instance statistics computed from input data in
    both training and evaluation modes.

    If :attr:`track_running_stats` is set to ``True``, during training this
    layer keeps running estimates of its computed mean and variance, which are
    then used for normalization during evaluation. The running estimates are
    kept with a default :attr:`momentum` of 0.1.

    .. note::
        This :attr:`momentum` argument is different from one used in optimizer
        classes and the conventional notion of momentum. Mathematically, the
        update rule for running statistics here is
        :math:`\hat{x}_\text{new} = (1 - \text{momentum}) \times \hat{x} + \text{momentum} \times x_t`,
        where :math:`\hat{x}` is the estimated statistic and :math:`x_t` is the
        new observed value.

    .. note::
        :class:`InstanceNorm1d` and :class:`LayerNorm` are very similar, but
        have some subtle differences. :class:`InstanceNorm1d` is applied
        on each channel of channeled data like multidimensional time series, but
        :class:`LayerNorm` is usually applied on entire sample and often in NLP
        tasks. Additionally, :class:`LayerNorm` applies elementwise affine
        transform, while :class:`InstanceNorm1d` usually doesn't apply affine
        transform.

    Args:
        num_features: number of features or channels :math:`C` of the input
        eps: a value added to the denominator for numerical stability. Default: 1e-5
        momentum: the value used for the running_mean and running_var computation. Default: 0.1
        affine: a boolean value that when set to ``True``, this module has
            learnable affine parameters, initialized the same way as done for batch normalization.
            Default: ``False``
        track_running_stats: a boolean value that when set to ``True``, this
            module tracks the running mean and variance, and when set to ``False``,
            this module does not track such statistics and always uses batch
            statistics in both training and eval modes. Default: ``False``
        bias: If set to ``False``, the layer will not learn an additive bias (only relevant if
            :attr:`affine` is ``True``). Default: ``True``

    Shape:
        - Input: :math:`(N, C, L)` or :math:`(C, L)`
        - Output: :math:`(N, C, L)` or :math:`(C, L)` (same shape as input)

    Examples::

        >>> # Without Learnable Parameters
        >>> m = nn.InstanceNorm1d(100)
        >>> # With Learnable Parameters
        >>> m = nn.InstanceNorm1d(100, affine=True)
        >>> input = torch.randn(20, 100, 40)
        >>> output = m(input)
    r   c                 ó   — dS ©NrW   r=   r+   s    r    r,   z InstanceNorm1d._get_no_batch_dimÏ   ó   € Øˆqr!   Nc                 ó|   — |                      ¦   «         dvr%t          d|                      ¦   «         › d�¦  «        ‚d S ©N)rW   é   zexpected 2D or 3D input (got úD input)©rY   r[   r&   s     r    r(   zInstanceNorm1d._check_input_dimÒ   ó?   € Ø�9Š9‰;Œ;˜fÐ$Ð$ÝÐR¸U¿YºY¹[¼[ÐRÐRÐRÑSÔSÐSð %Ð$r!   r`   ©rH   ra   rb   Ú__doc__rc   r,   r(   r=   r!   r    r   r   ˆ   sV   € € € € € ðDð DðL 3ð ð ð ð ðTð Tð Tð Tð Tð Tr!   r   c                   ó*   — e Zd ZdZeZdefd„Zdd„ZdS )r
   a  A :class:`torch.nn.InstanceNorm1d` module with lazy initialization of the ``num_features`` argument.

    The ``num_features`` argument of the :class:`InstanceNorm1d` is inferred from the ``input.size(1)``.
    The attributes that will be lazily initialized are `weight`, `bias`, `running_mean` and `running_var`.

    Check the :class:`torch.nn.modules.lazy.LazyModuleMixin` for further documentation
    on lazy modules and their limitations.

    Args:
        num_features: :math:`C` from an expected input of size
            :math:`(N, C, L)` or :math:`(C, L)`
        eps: a value added to the denominator for numerical stability. Default: 1e-5
        momentum: the value used for the running_mean and running_var computation. Default: 0.1
        affine: a boolean value that when set to ``True``, this module has
            learnable affine parameters, initialized the same way as done for batch normalization.
            Default: ``False``
        track_running_stats: a boolean value that when set to ``True``, this
            module tracks the running mean and variance, and when set to ``False``,
            this module does not track such statistics and always uses batch
            statistics in both training and eval modes. Default: ``False``
        bias: If set to ``False``, the layer will not learn an additive bias (only relevant if
            :attr:`affine` is ``True``). Default: ``True``

    Shape:
        - Input: :math:`(N, C, L)` or :math:`(C, L)`
        - Output: :math:`(N, C, L)` or :math:`(C, L)` (same shape as input)
    r   c                 ó   — dS ri   r=   r+   s    r    r,   z$LazyInstanceNorm1d._get_no_batch_dimö   rj   r!   Nc                 ó|   — |                      ¦   «         dvr%t          d|                      ¦   «         › d�¦  «        ‚d S rl   ro   r&   s     r    r(   z#LazyInstanceNorm1d._check_input_dimù   rp   r!   r`   )	rH   ra   rb   rr   r   Úcls_to_becomerc   r,   r(   r=   r!   r    r
   r
   ×   sZ   € € € € € ðð ð8 #€Mð 3ð ð ð ð ðTð Tð Tð Tð Tð Tr!   r
   c                   ó&   — e Zd ZdZdefd„Zdd„ZdS )r   a½  Applies Instance Normalization.

    This operation applies Instance Normalization
    over a 4D input (a mini-batch of 2D inputs
    with additional channel dimension) as described in the paper
    `Instance Normalization: The Missing Ingredient for Fast Stylization
    <https://arxiv.org/abs/1607.08022>`__.

    .. math::

        y = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta

    The mean and standard-deviation are calculated per-dimension separately
    for each object in a mini-batch. :math:`\gamma` and :math:`\beta` are learnable parameter vectors
    of size `C` (where `C` is the input size) if :attr:`affine` is ``True``.
    The standard-deviation is calculated via the biased estimator, equivalent to
    `torch.var(input, correction=0)`.

    By default, this layer uses instance statistics computed from input data in
    both training and evaluation modes.

    If :attr:`track_running_stats` is set to ``True``, during training this
    layer keeps running estimates of its computed mean and variance, which are
    then used for normalization during evaluation. The running estimates are
    kept with a default :attr:`momentum` of 0.1.

    .. note::
        This :attr:`momentum` argument is different from one used in optimizer
        classes and the conventional notion of momentum. Mathematically, the
        update rule for running statistics here is
        :math:`\hat{x}_\text{new} = (1 - \text{momentum}) \times \hat{x} + \text{momentum} \times x_t`,
        where :math:`\hat{x}` is the estimated statistic and :math:`x_t` is the
        new observed value.

    .. note::
        :class:`InstanceNorm2d` and :class:`LayerNorm` are very similar, but
        have some subtle differences. :class:`InstanceNorm2d` is applied
        on each channel of channeled data like RGB images, but
        :class:`LayerNorm` is usually applied on entire sample and often in NLP
        tasks. Additionally, :class:`LayerNorm` applies elementwise affine
        transform, while :class:`InstanceNorm2d` usually doesn't apply affine
        transform.

    Args:
        num_features: :math:`C` from an expected input of size
            :math:`(N, C, H, W)` or :math:`(C, H, W)`
        eps: a value added to the denominator for numerical stability. Default: 1e-5
        momentum: the value used for the running_mean and running_var computation. Default: 0.1
        affine: a boolean value that when set to ``True``, this module has
            learnable affine parameters, initialized the same way as done for batch normalization.
            Default: ``False``
        track_running_stats: a boolean value that when set to ``True``, this
            module tracks the running mean and variance, and when set to ``False``,
            this module does not track such statistics and always uses batch
            statistics in both training and eval modes. Default: ``False``
        bias: If set to ``False``, the layer will not learn an additive bias (only relevant if
            :attr:`affine` is ``True``). Default: ``True``

    Shape:
        - Input: :math:`(N, C, H, W)` or :math:`(C, H, W)`
        - Output: :math:`(N, C, H, W)` or :math:`(C, H, W)` (same shape as input)

    Examples::

        >>> # Without Learnable Parameters
        >>> m = nn.InstanceNorm2d(100)
        >>> # With Learnable Parameters
        >>> m = nn.InstanceNorm2d(100, affine=True)
        >>> input = torch.randn(20, 100, 35, 45)
        >>> output = m(input)
    r   c                 ó   — dS ©Nrm   r=   r+   s    r    r,   z InstanceNorm2d._get_no_batch_dimG  rj   r!   Nc                 ó|   — |                      ¦   «         dvr%t          d|                      ¦   «         › d�¦  «        ‚d S ©N)rm   é   zexpected 3D or 4D input (got rn   ro   r&   s     r    r(   zInstanceNorm2d._check_input_dimJ  rp   r!   r`   rq   r=   r!   r    r   r   þ   sV   € € € € € ðFð FðP 3ð ð ð ð ðTð Tð Tð Tð Tð Tr!   r   c                   ó*   — e Zd ZdZeZdefd„Zdd„ZdS )r   a3  A :class:`torch.nn.InstanceNorm2d` module with lazy initialization of the ``num_features`` argument.

    The ``num_features`` argument of the :class:`InstanceNorm2d` is inferred from the ``input.size(1)``.
    The attributes that will be lazily initialized are `weight`, `bias`,
    `running_mean` and `running_var`.

    Check the :class:`torch.nn.modules.lazy.LazyModuleMixin` for further documentation
    on lazy modules and their limitations.

    Args:
        num_features: :math:`C` from an expected input of size
            :math:`(N, C, H, W)` or :math:`(C, H, W)`
        eps: a value added to the denominator for numerical stability. Default: 1e-5
        momentum: the value used for the running_mean and running_var computation. Default: 0.1
        affine: a boolean value that when set to ``True``, this module has
            learnable affine parameters, initialized the same way as done for batch normalization.
            Default: ``False``
        track_running_stats: a boolean value that when set to ``True``, this
            module tracks the running mean and variance, and when set to ``False``,
            this module does not track such statistics and always uses batch
            statistics in both training and eval modes. Default: ``False``
        bias: If set to ``False``, the layer will not learn an additive bias (only relevant if
            :attr:`affine` is ``True``). Default: ``True``

    Shape:
        - Input: :math:`(N, C, H, W)` or :math:`(C, H, W)`
        - Output: :math:`(N, C, H, W)` or :math:`(C, H, W)` (same shape as input)
    r   c                 ó   — dS ry   r=   r+   s    r    r,   z$LazyInstanceNorm2d._get_no_batch_dimo  rj   r!   Nc                 ó|   — |                      ¦   «         dvr%t          d|                      ¦   «         › d�¦  «        ‚d S r{   ro   r&   s     r    r(   z#LazyInstanceNorm2d._check_input_dimr  rp   r!   r`   )	rH   ra   rb   rr   r   rv   rc   r,   r(   r=   r!   r    r   r   O  óZ   € € € € € ðð ð: #€Mð 3ð ð ð ð ðTð Tð Tð Tð Tð Tr!   r   c                   ó&   — e Zd ZdZdefd„Zdd„ZdS )r	   aÙ  Applies Instance Normalization.

    This operation applies Instance Normalization
    over a 5D input (a mini-batch of 3D inputs with additional channel dimension) as described in the paper
    `Instance Normalization: The Missing Ingredient for Fast Stylization
    <https://arxiv.org/abs/1607.08022>`__.

    .. math::

        y = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta

    The mean and standard-deviation are calculated per-dimension separately
    for each object in a mini-batch. :math:`\gamma` and :math:`\beta` are learnable parameter vectors
    of size C (where C is the input size) if :attr:`affine` is ``True``.
    The standard-deviation is calculated via the biased estimator, equivalent to
    `torch.var(input, correction=0)`.

    By default, this layer uses instance statistics computed from input data in
    both training and evaluation modes.

    If :attr:`track_running_stats` is set to ``True``, during training this
    layer keeps running estimates of its computed mean and variance, which are
    then used for normalization during evaluation. The running estimates are
    kept with a default :attr:`momentum` of 0.1.

    .. note::
        This :attr:`momentum` argument is different from one used in optimizer
        classes and the conventional notion of momentum. Mathematically, the
        update rule for running statistics here is
        :math:`\hat{x}_\text{new} = (1 - \text{momentum}) \times \hat{x} + \text{momentum} \times x_t`,
        where :math:`\hat{x}` is the estimated statistic and :math:`x_t` is the
        new observed value.

    .. note::
        :class:`InstanceNorm3d` and :class:`LayerNorm` are very similar, but
        have some subtle differences. :class:`InstanceNorm3d` is applied
        on each channel of channeled data like 3D models with RGB color, but
        :class:`LayerNorm` is usually applied on entire sample and often in NLP
        tasks. Additionally, :class:`LayerNorm` applies elementwise affine
        transform, while :class:`InstanceNorm3d` usually doesn't apply affine
        transform.

    Args:
        num_features: :math:`C` from an expected input of size
            :math:`(N, C, D, H, W)` or :math:`(C, D, H, W)`
        eps: a value added to the denominator for numerical stability. Default: 1e-5
        momentum: the value used for the running_mean and running_var computation. Default: 0.1
        affine: a boolean value that when set to ``True``, this module has
            learnable affine parameters, initialized the same way as done for batch normalization.
            Default: ``False``
        track_running_stats: a boolean value that when set to ``True``, this
            module tracks the running mean and variance, and when set to ``False``,
            this module does not track such statistics and always uses batch
            statistics in both training and eval modes. Default: ``False``
        bias: If set to ``False``, the layer will not learn an additive bias (only relevant if
            :attr:`affine` is ``True``). Default: ``True``

    Shape:
        - Input: :math:`(N, C, D, H, W)` or :math:`(C, D, H, W)`
        - Output: :math:`(N, C, D, H, W)` or :math:`(C, D, H, W)` (same shape as input)

    Examples::

        >>> # Without Learnable Parameters
        >>> m = nn.InstanceNorm3d(100)
        >>> # With Learnable Parameters
        >>> m = nn.InstanceNorm3d(100, affine=True)
        >>> input = torch.randn(20, 100, 35, 45, 10)
        >>> output = m(input)
    r   c                 ó   — dS ©Nr|   r=   r+   s    r    r,   z InstanceNorm3d._get_no_batch_dim¿  rj   r!   Nc                 ó|   — |                      ¦   «         dvr%t          d|                      ¦   «         › d�¦  «        ‚d S ©N)r|   é   zexpected 4D or 5D input (got rn   ro   r&   s     r    r(   zInstanceNorm3d._check_input_dimÂ  rp   r!   r`   rq   r=   r!   r    r	   r	   w  sV   € € € € € ðEð EðN 3ð ð ð ð ðTð Tð Tð Tð Tð Tr!   r	   c                   ó*   — e Zd ZdZeZdefd„Zdd„ZdS )r   aE  A :class:`torch.nn.InstanceNorm3d` module with lazy initialization of the ``num_features`` argument.

    The ``num_features`` argument of the :class:`InstanceNorm3d` is inferred from the ``input.size(1)``.
    The attributes that will be lazily initialized are `weight`, `bias`,
    `running_mean` and `running_var`.

    Check the :class:`torch.nn.modules.lazy.LazyModuleMixin` for further documentation
    on lazy modules and their limitations.

    Args:
        num_features: :math:`C` from an expected input of size
            :math:`(N, C, D, H, W)` or :math:`(C, D, H, W)`
        eps: a value added to the denominator for numerical stability. Default: 1e-5
        momentum: the value used for the running_mean and running_var computation. Default: 0.1
        affine: a boolean value that when set to ``True``, this module has
            learnable affine parameters, initialized the same way as done for batch normalization.
            Default: ``False``
        track_running_stats: a boolean value that when set to ``True``, this
            module tracks the running mean and variance, and when set to ``False``,
            this module does not track such statistics and always uses batch
            statistics in both training and eval modes. Default: ``False``
        bias: If set to ``False``, the layer will not learn an additive bias (only relevant if
            :attr:`affine` is ``True``). Default: ``True``

    Shape:
        - Input: :math:`(N, C, D, H, W)` or :math:`(C, D, H, W)`
        - Output: :math:`(N, C, D, H, W)` or :math:`(C, D, H, W)` (same shape as input)
    r   c                 ó   — dS rƒ   r=   r+   s    r    r,   z$LazyInstanceNorm3d._get_no_batch_dimç  rj   r!   Nc                 ó|   — |                      ¦   «         dvr%t          d|                      ¦   «         › d�¦  «        ‚d S r…   ro   r&   s     r    r(   z#LazyInstanceNorm3d._check_input_dimê  rp   r!   r`   )	rH   ra   rb   rr   r	   rv   rc   r,   r(   r=   r!   r    r   r   Ç  r€   r!   r   )r\   Útorch.nn.functionalÚnnÚ
functionalr3   Útorchr   Ú	batchnormr   r   Ú__all__r   r   r
   r   r   r	   r   r=   r!   r    ú<module>r�      sô  ðð €€€à Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð €ðp0ð p0ð p0ð p0ð p0�Iñ p0ô p0ð p0ðfLTð LTð LTð LTð LT�]ñ LTô LTð LTð^$Tð $Tð $Tð $Tð $T˜¨ñ $Tô $Tð $TðNNTð NTð NTð NTð NT�]ñ NTô NTð NTðb%Tð %Tð %Tð %Tð %T˜¨ñ %Tô %Tð %TðPMTð MTð MTð MTð MT�]ñ MTô MTð MTð`%Tð %Tð %Tð %Tð %T˜¨ñ %Tô %Tð %Tð %Tð %Tr!   