code: def apply_wider_decision(
      wider_decision, net_configs, growth_rate_list, noise
  ):
      if len(net_configs) == 1:
          decision = wider_decision[0]
          net_config = net_configs[0]
          _pt = 0
          decision_mask = []
          for block_idx, block in enumerate(net_config.blocks):
              if isinstance(block, DenseBlock):
                  for miniblock_idx, miniblock in enumerate(
                      block.miniblocks
                  ):
                      growth_rate = miniblock.out_features_dim
                      if growth_rate >= growth_rate_list[-1]:
                          decision_mask.append(0.0)
                      else:
                          decision_mask.append(1.0)
                          new_gr = growth_rate
                          for gr in growth_rate_list:
                              if gr > new_gr:
                                  new_gr = gr
                                  break
                          if decision[_pt]:
                              net_config.widen(
                                  loc={
                                      "block": block_idx,
                                      "miniblock": miniblock_idx,
                                      "multi-branch": "in_bottle",
                                      "layer": 0,
                                  },
                                  new_width=net_config.bc_ratio
                                  * new_gr,
                                  noise=noise,
                              )
                              net_config.widen(
                                  loc={
                                      "block": block_idx,
                                      "miniblock": miniblock_idx,
                                      "multi-branch": "branch",
                                      "branch": 0,
                                      "layer": 0,
                                  },
                                  new_width=new_gr,
                                  noise=noise,
                              )
                      _pt += 1
              else:
                  decision_mask.append(0.0)
                  _pt += 1
          decision_mask += [0.0] * (len(decision) - len(decision_mask))
          return np.array([decision_mask])
      else:
          decision_mask = []
          for _i, net_config in enumerate(net_configs):
              decision = wider_decision[_i]
              mask = apply_wider_decision(
                  [decision], [net_config], growth_rate_list, noise
              )
              decision_mask.append(mask)
          return np.concatenate(decision_mask, axis=0)
  
file_path: auptimizer/src/aup/Proposer/eas/arch_search/arch_search_densenet_net2net.py
imports: from ..expdir_monitor.arch_manager import ArchManager
  from ..meta_controller.base_controller import Vocabulary, EncoderNet, WiderActorNet, DeeperActorNet
  from ..meta_controller.rl_controller import ReinforceNet2NetController
  from time import gmtime, strftime, time
  from datetime import timedelta
  from ..models.dense_net import DenseBlock, TransitionBlock
  import re
  import numpy
label_desc: Use image node_id 4 for calling a global function with example usage: apply_wider_decision(wider_decision, net_configs, growth_rate_list, noise) and returns: np, np