code: def decode_arch_def(
      arch_def,
      depth_multiplier=1.0,
      depth_trunc="ceil",
      experts_multiplier=1,
      fix_first_last=False,
  ):
      arch_args = []
      for stack_idx, block_strings in enumerate(arch_def):
          assert isinstance(block_strings, list)
          stack_args = []
          repeats = []
          for block_str in block_strings:
              assert isinstance(block_str, str)
              ba, rep = _decode_block_str(block_str)
              if (
                  ba.get("num_experts", 0) > 0
                  and experts_multiplier > 1
              ):
                  ba["num_experts"] *= experts_multiplier
              stack_args.append(ba)
              repeats.append(rep)
          if fix_first_last and (
              stack_idx == 0 or stack_idx == len(arch_def) - 1
          ):
              arch_args.append(
                  _scale_stage_depth(
                      stack_args, repeats, 1.0, depth_trunc
                  )
              )
          else:
              arch_args.append(
                  _scale_stage_depth(
                      stack_args, repeats, depth_multiplier, depth_trunc
                  )
              )
      return arch_args
  
imports: import re
  from copy import deepcopy
  from .conv2d_layers import *
  from geffnet.activations import *
label_desc: Use image node_id 11 for calling a global function with example usage: decode_arch_def(arch_def, depth_multiplier, depth_trunc, experts_multiplier, fix_first_last) and returns: arch_args