code: def _decode_block_string(block_string):
      assert isinstance(block_string, str)
  
      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
  
      assert ("s" in options and len(options["s"]) == 1) or (
          len(options["s"]) == 2 and options["s"][0] == options["s"][1]
      )
  
      return BlockArgs(
          kernel_size=int(options["k"]),
          num_repeat=int(options["r"]),
          input_filters=int(options["i"]),
          output_filters=int(options["o"]),
          expand_ratio=int(options["e"]),
          id_skip=("noskip" not in block_string),
          se_ratio=float(options["se"]) if "se" in options else None,
          stride=[int(options["s"][0])],
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import re
  import collections
  import paddle
  import paddle.nn
  import paddle.nn.functional
label_desc: Use image node_id 1 for calling the BlockDecoder obj's underlying member method code with example usage: obj._decode_block_string(block_string) and returns: BlockArgs