--- myst: html_meta: description: Convolution layers in PyTorch C++ — Conv1d, Conv2d, Conv3d, and transposed convolutions. keywords: PyTorch, C++, convolution, Conv1d, Conv2d, Conv3d, ConvTranspose, nn --- # Convolution Layers Convolutional layers apply learnable filters to input data, extracting local features through sliding window operations. They are fundamental to CNNs for image, audio, and sequential data processing. - **Conv1d/2d/3d**: Standard convolution for 1D sequences, 2D images, or 3D volumes - **ConvTranspose1d/2d/3d**: Transposed convolution (deconvolution) for upsampling **Key parameters:** - `in_channels`: Number of input channels - `out_channels`: Number of output channels (number of filters) - `kernel_size`: Size of the convolving kernel - `stride`: Stride of the convolution (default: 1) - `padding`: Zero-padding added to input (default: 0) - `dilation`: Spacing between kernel elements (default: 1) - `groups`: Number of blocked connections (default: 1, use `in_channels` for depthwise) ## Conv1d Applies 1D convolution over an input signal composed of several input planes. ```{doxygenclass} torch::nn::Conv1d :members: :undoc-members: ``` ```{doxygenclass} torch::nn::Conv1dImpl :members: :undoc-members: ``` ## Conv2d Applies 2D convolution over an input image. The most commonly used layer for image processing tasks. ```{doxygenclass} torch::nn::Conv2d :members: :undoc-members: ``` ```{doxygenclass} torch::nn::Conv2dImpl :members: :undoc-members: ``` **Example:** ```cpp // Create Conv2d: 3 input channels, 64 output channels, 3x3 kernel auto conv = torch::nn::Conv2d( torch::nn::Conv2dOptions(3, 64, 3) .stride(1) .padding(1) .bias(true)); auto output = conv->forward(input); // input: [N, 3, H, W] ``` ## Conv3d Applies 3D convolution over an input volume (e.g., video frames or 3D medical images). ```{doxygenclass} torch::nn::Conv3d :members: :undoc-members: ``` ```{doxygenclass} torch::nn::Conv3dImpl :members: :undoc-members: ``` ## ConvTranspose1d Applies 1D transposed convolution (fractionally-strided convolution) for upsampling. ```{doxygenclass} torch::nn::ConvTranspose1d :members: :undoc-members: ``` ```{doxygenclass} torch::nn::ConvTranspose1dImpl :members: :undoc-members: ``` ## ConvTranspose2d Applies 2D transposed convolution for upsampling. Commonly used in decoder networks and generative models. ```{doxygenclass} torch::nn::ConvTranspose2d :members: :undoc-members: ``` ```{doxygenclass} torch::nn::ConvTranspose2dImpl :members: :undoc-members: ``` **Example:** ```cpp // Create ConvTranspose2d for upsampling auto conv_transpose = torch::nn::ConvTranspose2d( torch::nn::ConvTranspose2dOptions(64, 32, 4) .stride(2) .padding(1)); ``` ## ConvTranspose3d Applies 3D transposed convolution for upsampling volumetric data. ```{doxygenclass} torch::nn::ConvTranspose3d :members: :undoc-members: ``` ```{doxygenclass} torch::nn::ConvTranspose3dImpl :members: :undoc-members: ```