es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo escribir un `tensorflow.data.Dataset`

Tengo algunas funciones que aceptan instancias de tensorflow.data.Dataset. Me gustaría tipificar esas funciones para que el llamador sepa qué se espera. Sin embargo, hacer data: Dataset no es suficiente, porque las personas no sabrían qué tipo de estructura produce el objeto (forma de los tensores, si es una tupla o un diccionario, etc).

Hay otro objeto, tensorflow.data.DatasetSpec, que se puede utilizar para documentar los objetos que serán producidos por tensorflow.data.Dataset. Sin embargo, no estoy seguro de cómo combinar esas cosas para una anotación de tipificación, y me veo obligado a describir la estructura en el docstring, lo cual no creo que sea ideal.

Me encantaría ver algo como un genérico, donde pasas el tipo que acepta, como Dataset[Spec] (similar a como hacemos List[int] en las listas), pero estoy feliz de aprender otras formas de lograr una tipificación más descriptiva que simplemente data: tf.data.Dataset.

¡Muchas gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Python y TensorFlow, puedes utilizar tensorflow.data.Dataset[T] para proporcionar información adicional sobre el tipo al usuario que llama, donde T representa el tipo o estructura de los datos producidos por el objeto TensorFlow Dataset. Por ejemplo, si el dataset produce diccionarios con las claves ‘images’ y ‘labels’, puedes utilizar tensorflow.data.Dataset[Dict[str, tf.Tensor]]. Esto informará a los usuarios qué tipo de estructura de datos pueden esperar del objeto dataset.

    Además, puedes utilizar tensorflow.data.DatasetSpec para proporcionar información más detallada sobre la estructura del dataset. Esto puede ser útil si el dataset produce estructuras de datos anidadas o si necesitas proporcionar información más detallada sobre la estructura de los datos producidos por el dataset.

    Un ejemplo de aplicación de tipificación a una función que acepta un dataset de TensorFlow podría verse así:

    from tensorflow.data import Dataset
    from tensorflow.data import DatasetSpec
    from typing import Dict, Tuple
    
    def mi_funcion(data: Dataset[Dict[str, Tuple[tf.Tensor, tf.Tensor]]]) -> None:
        """
        Mi función toma un diccionario que contiene las claves 'images' y 'labels', donde cada valor es una tupla de Tensores de TensorFlow.
        """
        ...
    

    En el ejemplo anterior, mi_funcion acepta un objeto TensorFlow Dataset que produce diccionarios con las claves ‘images’ y ‘labels’, donde cada valor es una tupla de tensores TensorFlow. La anotación de tipificación Dataset[Dict[str, Tuple[tf.Tensor, tf.Tensor]]] proporciona al usuario información sobre la estructura de los datos producidos por el objeto dataset.

Comments are closed.