:py:mod:`mipcandy.common.module.conv`
=====================================

.. py:module:: mipcandy.common.module.conv

.. autodoc2-docstring:: mipcandy.common.module.conv
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`AbstractConvBlock <mipcandy.common.module.conv.AbstractConvBlock>`
     -
   * - :py:obj:`WSConv2d <mipcandy.common.module.conv.WSConv2d>`
     -
   * - :py:obj:`WSConv3d <mipcandy.common.module.conv.WSConv3d>`
     -

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`_conv_block <mipcandy.common.module.conv._conv_block>`
     - .. autodoc2-docstring:: mipcandy.common.module.conv._conv_block
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`ConvBlock2d <mipcandy.common.module.conv.ConvBlock2d>`
     - .. autodoc2-docstring:: mipcandy.common.module.conv.ConvBlock2d
          :summary:
   * - :py:obj:`ConvBlock3d <mipcandy.common.module.conv.ConvBlock3d>`
     - .. autodoc2-docstring:: mipcandy.common.module.conv.ConvBlock3d
          :summary:

API
~~~

.. py:class:: AbstractConvBlock(in_ch: int, out_ch: int, kernel_size: int, *, stride: int = 1, padding: int = 0, dilation: int = 1, groups: int = 1, bias: bool = True, padding_mode: str = 'zeros', conv: mipcandy.layer.LayerT = ..., norm: mipcandy.layer.LayerT = ..., act: mipcandy.layer.LayerT = ...)
   :canonical: mipcandy.common.module.conv.AbstractConvBlock

   Bases: :py:obj:`torch.nn.Module`

   .. py:method:: forward(x: torch.Tensor) -> torch.Tensor
      :canonical: mipcandy.common.module.conv.AbstractConvBlock.forward

      .. autodoc2-docstring:: mipcandy.common.module.conv.AbstractConvBlock.forward

.. py:function:: _conv_block(default_conv: mipcandy.layer.LayerT, default_norm: mipcandy.layer.LayerT, default_act: mipcandy.layer.LayerT) -> type[mipcandy.common.module.conv.AbstractConvBlock]
   :canonical: mipcandy.common.module.conv._conv_block

   .. autodoc2-docstring:: mipcandy.common.module.conv._conv_block

.. py:data:: ConvBlock2d
   :canonical: mipcandy.common.module.conv.ConvBlock2d
   :type: type[mipcandy.common.module.conv.AbstractConvBlock]
   :value: '_conv_block(...)'

   .. autodoc2-docstring:: mipcandy.common.module.conv.ConvBlock2d

.. py:data:: ConvBlock3d
   :canonical: mipcandy.common.module.conv.ConvBlock3d
   :type: type[mipcandy.common.module.conv.AbstractConvBlock]
   :value: '_conv_block(...)'

   .. autodoc2-docstring:: mipcandy.common.module.conv.ConvBlock3d

.. py:class:: WSConv2d(in_channels: int, out_channels: int, kernel_size: torch.nn.common_types._size_2_t, stride: torch.nn.common_types._size_2_t = 1, padding: str | torch.nn.common_types._size_2_t = 0, dilation: torch.nn.common_types._size_2_t = 1, groups: int = 1, bias: bool = True, padding_mode: typing.Literal[zeros, reflect, replicate, circular] = 'zeros', device=None, dtype=None)
   :canonical: mipcandy.common.module.conv.WSConv2d

   Bases: :py:obj:`torch.nn.Conv2d`

   .. py:method:: forward(x: torch.Tensor) -> torch.Tensor
      :canonical: mipcandy.common.module.conv.WSConv2d.forward

      .. autodoc2-docstring:: mipcandy.common.module.conv.WSConv2d.forward

.. py:class:: WSConv3d(in_channels: int, out_channels: int, kernel_size: torch.nn.common_types._size_3_t, stride: torch.nn.common_types._size_3_t = 1, padding: str | torch.nn.common_types._size_3_t = 0, dilation: torch.nn.common_types._size_3_t = 1, groups: int = 1, bias: bool = True, padding_mode: typing.Literal[zeros, reflect, replicate, circular] = 'zeros', device=None, dtype=None)
   :canonical: mipcandy.common.module.conv.WSConv3d

   Bases: :py:obj:`torch.nn.Conv3d`

   .. py:method:: forward(x: torch.Tensor) -> torch.Tensor
      :canonical: mipcandy.common.module.conv.WSConv3d.forward

      .. autodoc2-docstring:: mipcandy.common.module.conv.WSConv3d.forward
