class_docstr: This function implements SincConv (SincNet).
  
  M. Ravanelli, Y. Bengio, "Speaker Recognition from raw waveform with
  SincNet", in Proc. of  SLT 2018 (https://arxiv.org/abs/1808.00158)
  
  Arguments
  ---------
  input_shape : tuple
      The shape of the input. Alternatively use ``in_channels``.
  in_channels : int
      The number of input channels. Alternatively use ``input_shape``.
  out_channels : int
      It is the number of output channels.
  kernel_size: int
      Kernel size of the convolutional filters.
  stride : int
      Stride factor of the convolutional filters. When the stride factor > 1,
      a decimation in time is performed.
  dilation : int
      Dilation factor of the convolutional filters.
  padding : str
      (same, valid, causal). If "valid", no padding is performed.
      If "same" and stride is 1, output shape is the same as the input shape.
      "causal" results in causal (dilated) convolutions.
  padding_mode : str
      This flag specifies the type of padding. See torch.nn documentation
      for more information.
  groups : int
      This option specifies the convolutional groups. See torch.nn
      documentation for more information.
  bias : bool
      If True, the additive bias b is adopted.
  sample_rate : int,
      Sampling rate of the input signals. It is only used for sinc_conv.
  min_low_hz : float
      Lowest possible frequency (in Hz) for a filter. It is only used for
      sinc_conv.
  min_low_hz : float
      Lowest possible value (in Hz) for a filter bandwidth.
  
  Example
  -------
  >>> inp_tensor = torch.rand([10, 16000])
  >>> conv = SincConv(input_shape=inp_tensor.shape, out_channels=25, kernel_size=11)
  >>> out_tensor = conv(inp_tensor)
  >>> out_tensor.shape
  torch.Size([10, 16000, 25])
docstr: Checks the input shape and returns the number of input channels.
docstr_tok: ["Checks","the","input","shape","and","returns","the","number","of","input","channels","."]
code: def _check_input_shape(self, shape):
      """Checks the input shape and returns the number of input channels."""
  
      if len(shape) == 2:
          in_channels = 1
      elif len(shape) == 3:
          in_channels = shape[-1]
      else:
          raise ValueError(
              "sincconv expects 2d or 3d inputs. Got " + str(len(shape))
          )
  
      # Kernel size must be odd
      if self.kernel_size % 2 == 0:
          raise ValueError(
              "The field kernel size must be an odd number. Got %s."
              % (self.kernel_size)
          )
      return in_channels
  
imports: import math
  import torch
  import logging
  import numpy
  import torch.nn
  import torch.nn.functional
  import torchaudio
  from typing import Tuple
  from speechbrain.processing.signal_processing import gabor_impulse_response, gabor_impulse_response_legacy_complex
label_desc: Use image node_id 3 for calling the SincConv obj's underlying member method code with example usage: obj._check_input_shape(shape) and returns: in_channels