Aprendizaje automático práctico con Scikit-Learn, Keras y TensorFlow, 3ª edición
by Aurélien Géron
Apéndice D. Gráficos TensorFlow
En este apéndice, exploraremos las gráficas generadas por las funciones TF (verCapítulo 12).
Funciones TF y funciones concretas
Las funciones TF son polimórficas, lo que significa que admiten entradas de distintos tipos (y formas). Por ejemplo, considera la siguiente función tf_cube():
@tf.functiondeftf_cube(x):returnx**3
Cada vez que llames a una función TF con una nueva combinación de tipos o formas de entrada, genera una nueva función concreta, con su propio gráfico especializado para esa combinación concreta. Tal combinación de tipos de argumentos y formas se denomina firma de entrada. Si llamas a la función TF con una firma de entrada que ya ha visto antes, reutilizará la función concreta que generó anteriormente. Por ejemplo, si llamas a tf_cube(tf.constant(3.0)), la función TF reutilizará la misma función concreta que utilizó para tf_cube(tf.constant(2.0)) (para tensores escalares float32). Pero generará una nueva función concreta si llamas a tf_cube(tf.constant([2.0])) o tf_cube(tf.constant([3.0])) (para tensores float32 de forma [1]), y otra más para tf_cube(tf.constant([[1.0, 2.0], [3.0, 4.0]])) (para tensores float32 de forma [2, 2]). Puedes obtener la función concreta para una determinada combinación de entradas llamando al método get_concrete_function() de la función TF. Entonces se puede llamar como una función normal, pero sólo admitirá una firma de entrada (en este ejemplo, tensores escalares float32):
>>>concrete_function ...