class_docstr: A sliceable version of :class:`chainer.datasets.ConcatenatedDataset`.
  
  Here is an example.
  
  >>> dataset_a = TupleDataset([0, 1, 2], [0, 1, 4])
  >>> dataset_b = TupleDataset([3, 4, 5], [9, 16, 25])
  >>>
  >>> dataset = ConcatenatedDataset(dataset_a, dataset_b)
  >>> dataset.slice[:, 0][:]  # [0, 1, 2, 3, 4, 5]
  
  Args:
      datasets: The underlying datasets.
          Each dataset should inherit
          :class:`~chainercv.chainer_experimental.datasets.sliceable.Sliceabledataset`
          and should have the same keys.
code: def __init__(self, *datasets):
      if len(datasets) == 0:
          raise ValueError("At least one dataset is required")
      self._datasets = datasets
      self._keys = datasets[0].keys
      for dataset in datasets[1:]:
          if not dataset.keys == self._keys:
              raise ValueError("All datasets should have the same keys")
  
imports: from chainercv.chainer_experimental.datasets.sliceable import SliceableDataset
label_desc: Use image node_id 1 to create a new ConcatenatedDataset object from inherited base classes: SliceableDataset with example: obj = ConcatenatedDataset()