class_docstr: LinearBottleneck used in MobileNetV2 model from the
  `"Inverted Residuals and Linear Bottlenecks:
  Mobile Networks for Classification, Detection and Segmentation"
  <https://arxiv.org/abs/1801.04381>`_ paper.
  
  Parameters
  ----------
  in_channels : int
      Number of input channels.
  channels : int
      Number of output channels.
  t : int
      Layer expansion ratio.
  stride : int
      stride
class_docstr_tok: ["LinearBottleneck","used","in","MobileNetV2","model","from","the","`","``","Inverted","Residuals","and","Linear","Bottlenecks",":","Mobile","Networks","for","Classification",",","Detection","and","Segmentation","''","<","https",":","\/\/arxiv.org\/abs\/1801.04381",">","`","_","paper",".","Parameters","--","--","--","--","--","in_channels",":","int","Number","of","input","channels",".","channels",":","int","Number","of","output","channels",".","t",":","int","Layer","expansion","ratio",".","stride",":","int","stride"]
code: def __init__(self, in_channels, channels, t, stride, **kwargs):
      super(LinearBottleneck, self).__init__(**kwargs)
      self.use_shortcut = stride == 1 and in_channels == channels
      self.out = nn.HybridSequential()
  
      _add_conv(self.out, in_channels * t, relu6=True)
      _add_conv(
          self.out,
          in_channels * t,
          kernel=3,
          stride=stride,
          pad=1,
          num_group=in_channels * t,
          relu6=True,
      )
      _add_conv(self.out, channels, active=False, relu6=True)
  
imports: import os
  from ...None import nn
  from ....device import cpu
  from ...block import HybridBlock
  from ....None import base, np
  from ....util import use_np, wrap_ctx_to_device_func
label_desc: Use image node_id 1 to create a new LinearBottleneck object from inherited base classes: nn with example: obj = LinearBottleneck(in_channels, channels, t, stride)