code: def make_divisible(
      v: Union[
          MutableExpression[int], MutableExpression[float], int, float
      ],
      divisor,
      min_val=None,
  ) -> MaybeIntChoice:
      """
      This function is taken from the original tf repo.
      It ensures that all layers have a channel number that is divisible by 8
      It can be seen here:
      https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet.py
      """
      if min_val is None:
          min_val = divisor
      # This should work for both value choices and constants.
      new_v = MutableExpression.max(
          min_val, round(v + divisor // 2) // divisor * divisor
      )
      # Make sure that round down does not go down by more than 10%.
      return MutableExpression.condition(
          new_v < 0.9 * v, new_v + divisor, new_v
      )
  
imports: import math
  from typing import Optional, Callable, List, Tuple, Iterator, Union, cast, overload
  import torch
  from torch import nn
  from nni.mutable import MutableExpression
  from nni.nas.nn.pytorch import ModelSpace, LayerChoice, Repeat, MutableConv2d, MutableLinear, MutableBatchNorm2d
  from .utils.pretrained import load_pretrained_weight
label_desc: Use image node_id 3 for calling a global function with example usage: make_divisible(v, divisor, min_val) and returns: MutableExpression