Path: blob/master/site/pt-br/datasets/features.md
38497 views
FeatureConnector
A API tfds.features.FeatureConnector:
Define a estrutura, formatos e dtypes do
tf.data.DatasetfinalAbstrai a serialização de/para o disco.
Expõe metadados adicionais (por exemplo, nomes de rótulos, taxa de amostragem de áudio,...)
Visão geral
O tfds.features.FeatureConnector define a estrutura de características do dataset (em tfds.core.DatasetInfo):
Características podem ser documentadas usando apenas uma descrição textual (doc='description') ou usando tfds.features.Documentation diretamente para fornecer uma descrição mais detalhada da característica.
Características podem ser:
Valores escalares:
tf.bool,tf.string,tf.float32,... Quando quiser documentar a característica, você também pode usartfds.features.Scalar(tf.int64, doc='description').tfds.features.Audio,tfds.features.Video,... (veja a lista de características disponíveis)dictaninhado de características:{'metadata': {'image': Image(), 'description': tf.string}},...tfds.features.Sequenceaninhados:Sequence({'image': ..., 'id': ...}),Sequence(Sequence(tf.int64)),...
Durante a geração, os exemplos serão serializados automaticamente por FeatureConnector.encode_example num formato adequado ao disco (atualmente buffers de protocolo tf.train.Example):
Ao ler o dataset (por exemplo, com tfds.load), os dados são decodificados automaticamente com FeatureConnector.decode_example. O tf.data.Dataset retornado corresponderá à estrutura do dict definida em tfds.core.DatasetInfo:
Serializar/desserializar para proto
O TFDS expõe uma API de baixo nível para serializar/desserializar exemplos para o proto tf.train.Example.
Para serializar dict[np.ndarray | Path | str | ...] para proto bytes, use features.serialize_example:
Para desserializar para proto bytes para tf.Tensor, use features.deserialize_example:
Acesso de metadados
ConsVejaulte o documento de introdução para acessar os metadados das característica (nomes dos rótulos, forma, dtype,...). Exemplo:
Crie seu próprio tfds.features.FeatureConnector
Se você acredita que uma característica está faltando entre as características disponíveis, abra um novo issue.
Para criar seu próprio conector de características, você precisa herdar de tfds.features.FeatureConnector e implementar os métodos abstratos.
Se sua característica for um valor de tensor único, é melhor herdar de
tfds.features.Tensore usarsuper()quando necessário. Veja o código-fontetfds.features.BBoxFeaturepara um exemplo.Se seu recurso for um container de múltiplos tensores, é melhor herdar de
tfds.features.FeaturesDicte usarsuper()para codificar automaticamente os subconectores.
O objeto tfds.features.FeatureConnector abstrai como o recurso é codificado no disco e como ele é apresentado ao usuário. Abaixo está um diagrama que mostra as camadas de abstração do dataset e a transformação dos arquivos brutos do dataset para o objeto tf.data.Dataset.

Para criar seu próprio conector de características, crie uma subclasse de tfds.features.FeatureConnector e implemente os métodos abstratos a seguir:
encode_example(data): define como codificar os dados fornecidos no gerador_generate_examples()em dados compatíveis comtf.train.Example. Pode retornar um único valor ou umdictde valores.decode_example(data): define como decodificar os dados do tensor lido detf.train.Exampleno tensor do usuário retornado portf.data.Dataset.get_tensor_info(): indica o formato/tipo do(s) tensor(es) retornado(s) portf.data.Dataset. Pode ser opcional se herdar de outrotfds.features.(opcionalmente)
get_serialized_info(): se as informações retornadas porget_tensor_info()forem diferentes de como os dados são realmente gravados no disco, então você precisa sobrescreverget_serialized_info()para corresponder às especificações dotf.train.Exampleto_json_content/from_json_content: é necessário para permitir que seu dataset seja carregado sem o código-fonte original. Veja Recurso de áudio para um exemplo.
Observação: certifique-se de testar seus conectores de características com self.assertFeature e tfds.testing.FeatureExpectationItem. Dê uma olhada nos exemplos de teste:
Para obter mais informações, dê uma olhada na documentação tfds.features.FeatureConnector. Também é melhor ver alguns exemplos reais.