code: def remapped_branches(self, noise=None):
      if self.merge == "add" or self.merge is None:
          size = self.out_features_dim
          indices = np.random.choice(np.arange(size), size)
          new_branches = []
          for branch in self.branches:
              new_layers = [
                  layer.copy() for layer in branch.layers[:-1]
              ]
              last_layer = (
                  branch.layers[-1].copy().remap(indices, noise=noise)
              )
              new_layers.append(last_layer)
              new_branch = LayerCascade(branch.id, new_layers)
              new_branches.append(new_branch)
      elif self.merge == "concat":
          new_branches = []
          offset = 0
          indices = []
          for branch in self.branches:
              size = branch.out_features_dim
              sub_indices = np.random.choice(np.arange(size), size)
              new_layers = [
                  layer.copy() for layer in branch.layers[:-1]
              ]
              last_layer = (
                  branch.layers[-1]
                  .copy()
                  .remap(sub_indices, noise=noise)
              )
              new_layers.append(last_layer)
              new_branch = LayerCascade(branch.id, new_layers)
              new_branches.append(new_branch)
              indices.append(sub_indices + offset)
              offset += size
          indices = np.concatenate(indices)
      else:
          raise NotImplementedError
      return new_branches, indices
  
file_path: auptimizer/src/aup/Proposer/eas/models/layer_multi_branch.py
imports: import tensorflow
  import numpy
  from .layer_cascade import LayerCascade
label_desc: Use image node_id 14 for calling the LayerMultiBranch obj's underlying member method code with example usage: obj.remapped_branches(noise) and returns: new_branches,  indices