code: def channel_shift_multi(x, intensity, is_random=False, channel_index=2):
      
      if is_random:
          factor = np.random.uniform(-intensity, intensity)
      else:
          factor = intensity
  
      results = []
      for data in x:
          data = np.rollaxis(data, channel_index, 0)
          min_x, max_x = np.min(data), np.max(data)
          channel_images = [np.clip(x_channel + factor, min_x, max_x) for x_channel in x]
          data = np.stack(channel_images, axis=0)
          data = np.rollaxis(x, 0, channel_index + 1)
          results.append(data)
      return np.asarray(results)
docs: Shift the channels of images with the same arguments, randomly or non-randomly, see `numpy.rollaxis <https://docs.scipy.org/doc/numpy/reference/generated/numpy.rollaxis.html>`__.
      Usually be used for image segmentation which x=[X, Y], X and Y should be matched.
  
      Parameters
      -----------
      x : list of numpy.array
          List of images with dimension of [n_images, row, col, channel] (default).
      others : args
          See ``tl.prepro.channel_shift``.
  
      Returns
      -------
      numpy.array
          A list of processed images.