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 visualizar un gráfico sin entrenar el modelo usando Tensorboard?

Estoy intentando visualizar el modelo en Tensorboard sin entrenar.

Revisé esto y esto, pero aún así no funciona incluso para el modelo más simple.

import tensorflow as tf
import tensorflow.keras as keras

Ambos tf.version y tensorboard.version son 2.5.0

s_model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation='softmax')
])
logdir = '.../logs'
callbacks = keras.callbacks.TensorBoard(log_dir=logdir)
callbacks.set_model(s_model) # Esto es exactamente lo que se sugiere en el enlace

Cuando hago lo anterior, obtengo el mensaje de error:

La visualización del gráfico falló.

Error: GraphDef malformado. Esto a veces puede ser causado por una mala
conexión de red o dificultades para reconciliar múltiples GraphDefs; para
el último caso, por favor consulte
https://github.com/tensorflow/tensorboard/issues/1929.

No creo que esto sea un problema de reconciliación porque no es una función personalizada, y si compilo el modelo, lo entreno, luego puedo obtener la visualización del gráfico que quiero.

s_model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
(train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()
train_images = train_images / 255.0
logdir = '.../logs'
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
s_model.fit(
    train_images,
    train_labels, 
    batch_size=64,
    epochs=5, 
    callbacks=[tensorboard_callback])

Esto proporciona la visualización de gráficos deseada. ¿Pero hay alguna otra forma de obtener la visualización de gráficos en Tensorboard sin entrenamiento?

Por supuesto, también conozco una solución alternativa, es decir, entrenar con tf.random.normal() durante un tiempo, lo cual resolvería el problema, pero estoy buscando una forma más elegante, como _callbacks.set_model(s_model)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, parece que no es posible visualizar el modelo en Tensorboard sin entrenamiento en este momento. Esto se debe a que la visualización del grafo en Tensorboard se basa en el grafo computacional generado durante el entrenamiento. Sin ejecutar realmente el modelo, no hay forma de generar este grafo.

    Como se mencionó en la pregunta, una solución alternativa para esto es entrenar el modelo durante un corto período de tiempo utilizando datos ficticios y luego detener el entrenamiento y visualizar el grafo en Tensorboard. Sin embargo, esta no es una solución muy elegante.

    Otra solución alternativa podría ser utilizar las funciones tf.summary.trace_on() y tf.summary.trace_export() en TensorFlow para rastrear la ejecución del modelo y guardar los datos de traza resultantes. Estos datos de traza pueden ser cargados en Tensorboard para su visualización. Sin embargo, esto requiere agregar código adicional al propio modelo y no es tan simple como llamar a una función como _callbacks.set_model(s_model).

    En general, aunque sería bueno tener una forma sencilla de visualizar el modelo en Tensorboard sin entrenamiento, parece que esto no es posible en la actualidad.

Comments are closed.