class_docstr: LinearBottleneck used in MobileNetV2
class_docstr_tok: ["LinearBottleneck","used","in","MobileNetV2"]
code: def __init__(
      self,
      in_channels,
      out_channels,
      t=6,
      stride=2,
      norm_layer=nn.BatchNorm,
      norm_kwargs=None,
  ):
      super(LinearBottleneck, self).__init__()
      self.use_shortcut = stride == 1 and in_channels == out_channels
      with self.name_scope():
          self.block = nn.HybridSequential()
          self.block.add(
              _ConvBNReLU(
                  in_channels,
                  in_channels * t,
                  1,
                  norm_layer=norm_layer,
                  norm_kwargs=norm_kwargs,
              )
          )
          self.block.add(
              _DWConv(
                  in_channels * t,
                  in_channels * t,
                  stride,
                  norm_layer=norm_layer,
                  norm_kwargs=norm_kwargs,
              )
          )
          self.block.add(
              nn.Conv2D(
                  in_channels=in_channels * t,
                  channels=out_channels,
                  kernel_size=1,
                  use_bias=False,
              )
          )
          self.block.add(
              norm_layer(
                  in_channels=out_channels,
                  **({} if norm_kwargs is None else norm_kwargs),
              )
          )
  
imports: from mxnet.context import cpu
  from mxnet.gluon.block import HybridBlock
  from mxnet.gluon import nn
label_desc: Use image node_id 1 to create a new LinearBottleneck object from inherited base classes: HybridBlock with example: obj = LinearBottleneck(in_channels, out_channels, t, stride, norm_layer, norm_kwargs)