class_docstr: A class of Mixnet decoder to get model configuration.
docstr: Gets a mixnet block through a string notation of arguments.
  
  E.g. r2_k3_a1_p1_s2_e1_i32_o16_se0.25_noskip: r - number of repeat blocks,
  k - kernel size, s - strides (1-9), e - expansion ratio, i - input filters,
  o - output filters, se - squeeze/excitation ratio
  
  Args:
  block_string: a string, a string representation of block arguments.
  
  Returns:
  A BlockArgs instance.
  Raises:
  ValueError: if the strides option is not correctly specified.
docstr_tok: ["Gets","a","mixnet","block","through","a","string","notation","of","arguments",".","E.g",".","r2_k3_a1_p1_s2_e1_i32_o16_se0.25_noskip",":","r","-","number","of","repeat","blocks",",","k","-","kernel","size",",","s","-","strides","(","1-9",")",",","e","-","expansion","ratio",",","i","-","input","filters",",","o","-","output","filters",",","se","-","squeeze\/excitation","ratio","Args",":","block_string",":","a","string",",","a","string","representation","of","block","arguments",".","Returns",":","A","BlockArgs","instance",".","Raises",":","ValueError",":","if","the","strides","option","is","not","correctly","specified","."]
code: def _decode_block_string(
      block_string, depth_multiplier, depth_divisor, min_depth
  ):
      """Gets a mixnet block through a string notation of arguments.
  
      E.g. r2_k3_a1_p1_s2_e1_i32_o16_se0.25_noskip: r - number of repeat blocks,
      k - kernel size, s - strides (1-9), e - expansion ratio, i - input filters,
      o - output filters, se - squeeze/excitation ratio
  
      Args:
      block_string: a string, a string representation of block arguments.
  
      Returns:
      A BlockArgs instance.
      Raises:
      ValueError: if the strides option is not correctly specified.
      """
      if not isinstance(block_string, str):
          raise AssertionError
  
      ops = block_string.split("_")
      options = {}
      for op in ops:
          splits = re.split(r"(\d.*)", op)
          if len(splits) >= 2:
              key, value = splits[:2]
              options[key] = value
  
      if "s" not in options or len(options["s"]) != 2:
          raise ValueError(
              "Strides options should be a pair of integers."
          )
  
      def _parse_ksize(ss):
          ks = [int(k) for k in ss.split(".")]
          return ks if len(ks) > 1 else ks[0]
  
      return BlockArgs(
          num_repeat=int(options["r"]),
          dw_ksize=_parse_ksize(options["k"]),
          expand_ksize=_parse_ksize(options["a"]),
          project_ksize=_parse_ksize(options["p"]),
          strides=[int(options["s"][0]), int(options["s"][1])],
          expand_ratio=int(options["e"]),
          in_channels=round_filters(
              int(options["i"]),
              depth_multiplier,
              depth_divisor,
              min_depth,
          ),
          out_channels=round_filters(
              int(options["o"]),
              depth_multiplier,
              depth_divisor,
              min_depth,
          ),
          id_skip=("noskip" not in block_string),
          se_ratio=float(options["se"]) if "se" in options else 0,
          swish=("sw" in block_string),
          dilated=("dilated" in block_string),
      )
  
imports: import re
  from collections import namedtuple
label_desc: Use image node_id 1 for calling the MixnetDecoder obj's underlying member method code with example usage: obj._decode_block_string(block_string, depth_multiplier, depth_divisor, min_depth) and returns: BlockArgs, unknown