示例#1
0
  def encode_sample(self, sample_dict):
    """See base class for details."""
    # Flatten dict matching the tf-example specs
    # Use NonMutableDict to ensure there is no collision between features keys
    tfexample_dict = utils.NonMutableDict()

    # Iterate over sample fields
    for feature_key, (feature, sample_value) in utils.zip_dict(
        self._feature_dict,
        sample_dict
    ):
      # Encode the field with the associated encoder
      encoded_feature = feature.encode_sample(sample_value)

      # Singleton case
      if not feature.specs_keys:
        tfexample_dict[feature_key] = encoded_feature
      # Feature contains sub features
      else:
        _assert_keys_match(encoded_feature.keys(), feature.specs_keys)
        tfexample_dict.update({
            posixpath.join(feature_key, k): encoded_feature[k]
            for k in feature.specs_keys
        })
    return tfexample_dict
示例#2
0
    def __init__(self, split_info=None):
        self._splits = utils.NonMutableDict(
            error_msg="Overlap between splits. Split {key} has been added with "
            "itself.")

        if split_info:
            self.add(SlicedSplitInfo(split_info=split_info, slice_value=None))
示例#3
0
  def get_specs(self):
    """See base class for details."""
    # Flatten tf-example specs dict
    # Use NonMutableDict to ensure there is no collision between features keys
    specs_dict = utils.NonMutableDict()
    for feature_key, feature in self._feature_dict.items():
      feature_specs = feature.get_specs()

      # Features can be either containers (dict of other features) or plain
      # features (ex: single tensor). Plain features have a None
      # feature.specs_keys
      if not feature.specs_keys:
        specs_dict[feature_key] = feature_specs
      else:
        # Sanity check which should always be True, as feature.specs_keys is
        # computed using feature.get_specs()
        _assert_keys_match(feature_specs.keys(), feature.specs_keys)
        specs_dict.update({
            posixpath.join(feature_key, k): v for k, v in feature_specs.items()
        })

    return specs_dict