WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

PyTorch · Intermediate · question 28 of 100

How do you implement a custom layer in PyTorch? Provide an example.?

📕 Buy this interview preparation book: 100 PyTorch questions & answers — PDF + EPUB for $5

Implementing a custom layer in PyTorch can be done by creating a class that inherits from the ‘nn.Module‘ class, which is a base class for all neural network modules in PyTorch.

Here’s an example implementation of a custom layer, which is a simplified version of a convolutional layer:

import torch
import torch.nn as nn

class CustomConv2d(nn.Module):
    def __init__(self, in_channels, out_channels, kernel_size, stride=1, padding=0):
        super(CustomConv2d, self).__init__()
        self.in_channels = in_channels
        self.out_channels = out_channels
        self.kernel_size = kernel_size
        self.stride = stride
        self.padding = padding
        
        self.weight = nn.Parameter(torch.randn(out_channels, in_channels, kernel_size, kernel_size))
        self.bias = nn.Parameter(torch.randn(out_channels))
        
    def forward(self, x):
        # Apply convolution operation
        output = nn.functional.conv2d(x, self.weight, bias=self.bias, stride=self.stride, padding=self.padding)
        
        return output

In the ‘__init__‘ method, we define the hyperparameters of the layer, such as the number of input and output channels, kernel size, stride, and padding. We also initialize the trainable parameters of the layer, ‘weight‘ and ‘bias‘. ‘weight‘ is initialized as an ‘nn.Parameter‘, which is a wrapper for a tensor that tells PyTorch to track and apply gradients during backpropagation.

In the ‘forward‘ method, we apply the convolution operation using the ‘nn.functional.conv2d‘ function provided by PyTorch, passing in the input tensor ‘x‘, the learnable ‘weight‘ and ‘bias‘, and the hyperparameters defined in ‘__init__‘.

Once the custom layer is defined, it can be used in a neural network like any other PyTorch module. For example:

class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv1 = CustomConv2d(in_channels=3, out_channels=16, kernel_size=3, padding=1)
        self.conv2 = CustomConv2d(in_channels=16, out_channels=32, kernel_size=3, padding=1)
        self.fc = nn.Linear(32 * 8 * 8, 10)
        
    def forward(self, x):
        x = nn.functional.relu(self.conv1(x))
        x = nn.functional.relu(self.conv2(x))
        x = x.view(-1, 32 * 8 * 8)
        x = self.fc(x)
        return x

In this example, we create an instance of the ‘CustomConv2d‘ layer with 3 input channels, 16 output channels, a kernel size of 3, and padding of 1, and use it as the first convolutional layer in a neural network.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic PyTorch interview — then scores it.
📞 Practice PyTorch — free 15 min
📕 Buy this interview preparation book: 100 PyTorch questions & answers — PDF + EPUB for $5

All 100 PyTorch questions · All topics