class_docstr: A sliceable version of :class:`chainer.datasets.TransformDataset`.
  
  Note that it requires :obj:`keys` to determine the names of returned
  values.
  
  Here is an example.
  
  >>> def transfrom(in_data):
  >>>     img, bbox, label = in_data
  >>>     ...
  >>>     return new_img, new_label
  >>>
  >>> dataset = TramsformDataset(dataset, ('img', 'label'), transform)
  >>> dataset.keys  # ('img', 'label')
  
  Args:
      dataset: The underlying dataset.
          This dataset should have :meth:`__len__` and :meth:`__getitem__`.
      keys (string or tuple of strings): The name(s) of data
          that the transform function returns.
          If this parameter is omitted, :meth:`__init__` fetches a sample
          from the underlying dataset to determine the number of data.
      transform (callable): A function that is called to transform values
          returned by the underlying dataset's :meth:`__getitem__`.
code: def __init__(self, dataset, keys, transform=None):
      if transform is None:
          keys, transform = None, keys
  
      super(TransformDataset, self).__init__()
      self._dataset = dataset
      self._transform = transform
  
      if keys is None:
          sample = self._get(0)
          if isinstance(sample, tuple):
              keys = (None,) * len(sample)
          else:
              keys = None
  
      self.add_getter(keys, self._get)
      if not _is_iterable(keys):
          self.keys = 0
  
imports: from chainercv.chainer_experimental.datasets.sliceable import GetterDataset
  from chainercv.chainer_experimental.datasets.sliceable.sliceable_dataset import _is_iterable
label_desc: Use image node_id 1 to create a new TransformDataset object from inherited base classes: GetterDataset with example: obj = TransformDataset(dataset, keys, transform)