code: def forward(self, x):
      shortcut = x
      if self.conv_exp is not None:
          x = self.conv_exp(x)
      x = self.conv_dw(x)
      if self.se is not None:
          x = self.se(x)
      x = self.act_dw(x)
      x = self.conv_pwl(x)
      if self.use_shortcut:
          if self.drop_path is not None:
              x = self.drop_path(x)
          x = torch.cat(
              [
                  x[:, 0 : self.in_channels] + shortcut,
                  x[:, self.in_channels :],
              ],
              dim=1,
          )
      return x
  
imports: from functools import partial
  from math import ceil
  import torch
  import torch.nn
  from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
  from timm.layers import ClassifierHead, create_act_layer, ConvNormAct, DropPath, make_divisible, SEModule
  from ._builder import build_model_with_cfg
  from ._efficientnet_builder import efficientnet_init_weights
  from ._manipulate import checkpoint_seq
  from ._registry import generate_default_cfgs, register_model
label_desc: Use image node_id 3 for calling the LinearBottleneck obj's underlying member method code with example usage: obj.forward(x) and returns: x