code: def split_dataset(
      dataset, frac_list=None, shuffle=False, random_state=None
  ):
      """Split dataset into training, validation and test set.
  
      Parameters
      ----------
      dataset
          We assume ``len(dataset)`` gives the number of datapoints and ``dataset[i]``
          gives the ith datapoint.
      frac_list : list or None, optional
          A list of length 3 containing the fraction to use for training,
          validation and test. If None, we will use [0.8, 0.1, 0.1].
      shuffle : bool, optional
          By default we perform a consecutive split of the dataset. If True,
          we will first randomly shuffle the dataset.
      random_state : None, int or array_like, optional
          Random seed used to initialize the pseudo-random number generator.
          Can be any integer between 0 and 2**32 - 1 inclusive, an array
          (or other sequence) of such integers, or None (the default).
          If seed is None, then RandomState will try to read data from /dev/urandom
          (or the Windows analogue) if available or seed from the clock otherwise.
  
      Returns
      -------
      list of length 3
          Subsets for training, validation and test.
      """
      from itertools import accumulate
  
      if frac_list is None:
          frac_list = [0.8, 0.1, 0.1]
      frac_list = np.asarray(frac_list)
      assert np.allclose(
          np.sum(frac_list), 1.0
      ), "Expect frac_list sum to 1, got {:.4f}".format(
          np.sum(frac_list)
      )
      num_data = len(dataset)
      lengths = (num_data * frac_list).astype(int)
      lengths[-1] = num_data - np.sum(lengths[:-1])
      if shuffle:
          indices = np.random.RandomState(
              seed=random_state
          ).permutation(num_data)
      else:
          indices = np.arange(num_data)
      return [
          Subset(dataset, indices[offset - length : offset])
          for offset, length in zip(accumulate(lengths), lengths)
      ]
  
imports: from __future__ import absolute_import
  import errno
  import hashlib
  import os
  import pickle
  import sys
  import warnings
  import networkx.algorithms
  import numpy
  import requests
  from tqdm import tqdm
  from ..None import backend
  from .graph_serialize import load_graphs, load_labels, save_graphs
  from .tensor_serialize import load_tensors, save_tensors
label_desc: Use image node_id 3 for calling a global function with example usage: split_dataset(dataset, frac_list, shuffle, random_state) and returns: unknown