in tensorflow_examples/lite/model_maker/core/task/metadata_writers/text_classifier/metadata_writer_for_text_classifier.py [0:0]
def _create_metadata(self):
"""Creates the metadata for a text classifier."""
# Creates model info.
model_meta = _metadata_fb.ModelMetadataT()
model_meta.name = self.model_info.name
model_meta.description = self.model_info.description
model_meta.version = self.model_info.version
model_meta.author = "TensorFlow Lite Model Maker"
model_meta.license = ("Apache License. Version 2.0 "
"http://www.apache.org/licenses/LICENSE-2.0.")
# Creates input info.
input_meta = _metadata_fb.TensorMetadataT()
input_meta.name = "input_text"
input_meta.description = (
"Embedding vectors representing the input text to be classified. The "
"input need to be converted from raw text to embedding vectors using "
"the attached dictionary file.")
# Create the vocab file.
vocab_file = _metadata_fb.AssociatedFileT()
vocab_file.name = os.path.basename(self.associated_files[1])
vocab_file.description = ("Vocabulary file to convert natural language "
"words to embedding vectors.")
vocab_file.type = _metadata_fb.AssociatedFileType.VOCABULARY
# Create the RegexTokenizer.
tokenizer = _metadata_fb.ProcessUnitT()
tokenizer.optionsType = (
_metadata_fb.ProcessUnitOptions.RegexTokenizerOptions)
tokenizer.options = _metadata_fb.RegexTokenizerOptionsT()
tokenizer.options.delimRegexPattern = self.model_info.delim_regex_pattern
tokenizer.options.vocabFile = [vocab_file]
input_meta.content = _metadata_fb.ContentT()
input_meta.content.contentPropertiesType = (
_metadata_fb.ContentProperties.FeatureProperties)
input_meta.content.contentProperties = _metadata_fb.FeaturePropertiesT()
input_meta.processUnits = [tokenizer]
# Creates output info.
output_meta = _metadata_fb.TensorMetadataT()
output_meta.name = "probability"
output_meta.description = "Probabilities of the labels respectively."
output_meta.content = _metadata_fb.ContentT()
output_meta.content.contentProperties = _metadata_fb.FeaturePropertiesT()
output_meta.content.contentPropertiesType = (
_metadata_fb.ContentProperties.FeatureProperties)
output_stats = _metadata_fb.StatsT()
output_stats.max = [1.0]
output_stats.min = [0.0]
output_meta.stats = output_stats
label_file = _metadata_fb.AssociatedFileT()
label_file.name = os.path.basename(self.associated_files[0])
label_file.description = ("Labels for the categories that the model can "
"classify.")
label_file.type = _metadata_fb.AssociatedFileType.TENSOR_AXIS_LABELS
output_meta.associatedFiles = [label_file]
# Creates subgraph info.
subgraph = _metadata_fb.SubGraphMetadataT()
subgraph.inputTensorMetadata = [input_meta]
subgraph.outputTensorMetadata = [output_meta]
model_meta.subgraphMetadata = [subgraph]
b = flatbuffers.Builder(0)
b.Finish(
model_meta.Pack(b),
_metadata.MetadataPopulator.METADATA_FILE_IDENTIFIER)
self.metadata_buf = b.Output()