Tensorflow – Usando tf.summary con 1.2 Estimator API

Estoy intentando agregar algunos registros de TensorBoard a un modelo que usa la nueva API tf.estimator.

Tengo un gancho configurado como tal:

summary_hook = tf.train.SummarySaverHook( save_secs=2, output_dir=MODEL_DIR, summary_op=tf.summary.merge_all()) # ... classifier.train( input_fn, steps=1000, hooks=[summary_hook]) 

En mi model_fn , también estoy creando un summary

 def model_fn(features, labels, mode): # ... model stuff, calculate the value of loss tf.summary.scalar("loss", loss) # ... 

Sin embargo, cuando ejecuto este código, obtengo el siguiente error de summary_hook : Exactly one of scaffold or summary_op must be provided. Probablemente esto se deba a que tf.summary.merge_all() no encuentra ningún resumen y devuelve None , a pesar del tf.summary.scalar que declaré en model_fn .

¿Alguna idea de por qué esto no estaría funcionando?

Solo para quien tenga esta pregunta en el futuro, la solución seleccionada no funciona para mí (vea mis comentarios en la solución seleccionada).

En realidad, con TF 1.2 Estimator API, uno no necesita tener Summary_hook. Solo tengo tf.summary.scalar("loss", loss) en el model_fn, y ejecuto el código sin summary_hook. La pérdida se registra y se muestra en el tensorboard. No estoy seguro si TF API se cambió después de esto y preguntas similares.

Use tf.train.Scaffold() y pase tf.merge_all como sigue

 summary_hook = tf.train.SummarySaverHook( save_secs=2, output_dir=MODEL_DIR, scaffold=tf.train.Scaffold(summary_op=tf.summary.merge_all())) 

con Tensorflow ver-r1.3

Añade tus operaciones de resumen en tu estimador model_fn

ejemplo:

 tf.summary.histogram(tensorOp.name, tensorOp) 

Si cree que los resúmenes de escritura pueden consumir tiempo y espacio, puede controlar la frecuencia de escritura de los resúmenes en su Estimator run_config

 run_config = tf.contrib.learn.RunConfig() run_config = run_config.replace(model_dir=FLAGS.model_dir) run_config = run_config.replace(save_summary_steps=150) 

Nota: esto afectará la frecuencia de redacción del resumen general para el registro de TensorBoard, de su estimador ( tf.estimator.Estimator )