def METHOD_NAME(self, x):
    """
    Forward pass of the UNet model.
    Args:
        x (Tensor): Should be a 5D Tensor as [batch_size, channels, x_dims, y_dims, z_dims].
    Returns:
        x (Tensor): Returns a 5D Output Tensor as [batch_size, n_classes, x_dims, y_dims, z_dims].
    """
    # Store intermediate feature maps
    y = []
    y.append(self.ins(x))
    # [downsample --> encode] x num layers
    for i in range(0, self.depth):
        temp = self.ds[i](y[i])
        y.append(self.en[i](temp))
    # Get the feature map at the last (deepest) layer
    x = y[-1]
    # [upsample --> encode] x num layers
    for i in range(self.depth - 1, -1, -1):
        # Upsample the feature map to match the size of the corresponding feature map in the encoder
        x = self.us[i](x)
        # Concatenate with the corresponding feature map from the encoder
        x = self.de[i](x, y[i])
    # Get the final output
    x = self.out(x)
    return x