(self)
Creates a DatasetSpecification and records for the dataset.

    Specifically, the work that needs to be done here is twofold:
    Firstly, the initial values of the following attributes need to be updated:
    1) self.classes_per_split: a dict mapping each split to the number of
      classes assigned to it
    2) self.images_per_class: a dict mapping each class to its number of images
    3) self.class_names: a dict mapping each class (e.g. 0) to its (string) name
      if available.
    This automatically results to updating self.dataset_spec as required.

    Important note: Must assign class ids in a certain order:
    lowest ones for training classes, then for validation classes and highest
    ones for testing classes.
    The reader data sources operate under this assumption.

    Secondly, a tf.record needs to be created and written for each class. There
    are some general functions at the top of this file that may be useful for
    this (e.g. write_tfrecord_from_npy_single_channel,
    write_tfrecord_from_image_files).
Creates a DatasetSpecification and records for the dataset.
Creates a DatasetSpecification and records for the dataset .
def create_dataset_specification_and_records(self):
    """Creates a DatasetSpecification and records for the dataset.

    Specifically, the work that needs to be done here is twofold:
    Firstly, the initial values of the following attributes need to be updated:
    1) self.classes_per_split: a dict mapping each split to the number of
      classes assigned to it
    2) self.images_per_class: a dict mapping each class to its number of images
    3) self.class_names: a dict mapping each class (e.g. 0) to its (string) name
      if available.
    This automatically results to updating self.dataset_spec as required.

    Important note: Must assign class ids in a certain order:
    lowest ones for training classes, then for validation classes and highest
    ones for testing classes.
    The reader data sources operate under this assumption.

    Secondly, a tf.record needs to be created and written for each class. There
    are some general functions at the top of this file that may be useful for
    this (e.g. write_tfrecord_from_npy_single_channel,
    write_tfrecord_from_image_files).
    """
    raise NotImplementedError('Must be implemented in each sub-class.')
def create_dataset_specification_and_records ( self ) : raise NotImplementedError ( 'Must be implemented in each sub-class.' )