Note: This is mainly designed for TensorFlow 1; the logging API in TensorFlow 2 is significantly easier than in TensorFlow 1. This module is compatible with TensorFlow 2, but some features may not work with eager execution.
Are you prototyping something and want to be able to magically graph some value without going through all the usual steps to set up TensorFlow logging properly?
easy_tf_log
is a simple module to do just that.
from easy_tf_log import tflog
then you can do
for i in range(10):
tflog('really_interesting_variable_name', i)
and you'll find a directory logs
that you can point TensorBoard to
$ tensorboard --logdir logs
to get
See demo.py
for a full demo.
Based on logging code from OpenAI's baselines.
pip install easy-tf-log
Note that TensorFlow must be installed separately.
easy-tf-log
supports logging using either a global logger or an instantiated logger object.
The global logger is good for very quick prototypes, but for anything more complicated,
you'll probably want to instantiate your own Logger
object.
easy_tf_log.tflog(key, value, step=None)
- Logs
value
(int or float) under the namekey
(string). step
(int) sets the step associated withvalue
explicitly. If not specified, the step will increment on each call.
- Logs
easy_tf_log.set_dir(log_dir)
- Sets the global logger to log to the specified directory.
log_dir
can be an absolute or a relative path.
easy_tf_log.set_writer(writer)
- Sets the global logger to log using the specified
tf.summary.FileWriter
instance.
- Sets the global logger to log using the specified
By default (i.e. if set_dir
is not called), the global logger logs to a logs
directory
automatically created in the working directory.
logger = easy_tf_log.Logger(log_dir=None, writer=None)
- Create a
Logger
. log_dir
: an absolute of relative path specifying the directory to log to.writer
: an existingtf.summary.FileWriter
instance to use for logging.- If neither
log_dir
norwriter
are specified, the logger will log to alogs
directory in the working directory. If both are specified, the constructor will raise aValueError
.
- Create a
logger.log_key_value(key, value, step=None)
- See
tflog
.
- See
logger.log_list_stats(key, values_list)
- Log the minimum, maximum, mean, and standard deviation of
values_list
(a list of ints or floats).
- Log the minimum, maximum, mean, and standard deviation of
logger.measure_rate(key, value)
- Log the rate at which
value
(int or float) changes per second. - The first call internally stores the time of the first value; the second call logs the change between the second value and the first value divided by the time between the calls; etc.
- Log the rate at which
logger.set_dir(log_dir)
- See
easy_tf_log.set_dir(log_dir)
.
- See
logger.set_writer(writer)
- See
easy_tf_log.set_writer(writer)
.
- See
logger.close()
- Flush logs and close the log file handle.