code: def _fit_dilations(
      input_length, num_features, max_dilations_per_kernel
  ):
      num_kernels = 84
  
      num_features_per_kernel = num_features // num_kernels
      true_max_dilations_per_kernel = min(
          num_features_per_kernel, max_dilations_per_kernel
      )
      multiplier = (
          num_features_per_kernel / true_max_dilations_per_kernel
      )
  
      max_exponent = np.log2((input_length - 1) / (9 - 1))
      dilations, num_features_per_dilation = np.unique(
          np.logspace(
              0, max_exponent, true_max_dilations_per_kernel, base=2
          ).astype(np.int32),
          return_counts=True,
      )
      num_features_per_dilation = (
          num_features_per_dilation * multiplier
      ).astype(
          np.int32
      )  # this is a vector
  
      remainder = num_features_per_kernel - np.sum(
          num_features_per_dilation
      )
      i = 0
      while remainder > 0:
          num_features_per_dilation[i] += 1
          remainder -= 1
          i = (i + 1) % len(num_features_per_dilation)
  
      return dilations, num_features_per_dilation
  
imports: import numpy
  from sktime.utils.numba.njit import njit
  from sktime.utils.validation._dependencies import _check_soft_dependencies
label_desc: Use image node_id 3 for calling a global function with example usage: _fit_dilations(input_length, num_features, max_dilations_per_kernel) and returns: dilations,  num_features_per_dilation