class_docstr: Implementation of the ResNet Bottleneck Block.
  
  Attributes:
      in_planes:
          Number of input channels.
      planes:
          Number of channels.
      stride:
          Stride of the first convolutional.
class_docstr_tok: ["Implementation","of","the","ResNet","Bottleneck","Block",".","Attributes",":","in_planes",":","Number","of","input","channels",".","planes",":","Number","of","channels",".","stride",":","Stride","of","the","first","convolutional","."]
docstr: Forward pass through bottleneck ResNet block.
  
  Args:
      x:
          Tensor of shape bsz x channels x W x H
  
  Returns:
      Tensor of shape bsz x channels x W x H
docstr_tok: ["Forward","pass","through","bottleneck","ResNet","block",".","Args",":","x",":","Tensor","of","shape","bsz","x","channels","x","W","x","H","Returns",":","Tensor","of","shape","bsz","x","channels","x","W","x","H"]
code: def forward(self, x: Tensor) -> Tensor:
      """Forward pass through bottleneck ResNet block.
  
      Args:
          x:
              Tensor of shape bsz x channels x W x H
  
      Returns:
          Tensor of shape bsz x channels x W x H
      """
  
      out: Tensor = self.conv1(x)
      out = self.bn1(out)
      out = F.relu(out)
  
      out = self.conv2(out)
      out = self.bn2(out)
      out = F.relu(out)
  
      out = self.conv3(out)
      out = self.bn3(out)
  
      out += self.shortcut(x)
      out = F.relu(out)
  
      return out
  
imports: from __future__ import annotations
  from typing import List
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from lightly.models.batchnorm import get_norm_layer
label_desc: Use image node_id 2 for calling the Bottleneck obj's underlying member method code with example usage: obj.forward(x) and returns: out