How to log tensorflow metrics?

Problem

I have a training script written in tensorflow. How do I adjust it to log metrics to Neptune?

Solution

Say your training script looks like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import tensorflow as tf

mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

tensorboard = tf.keras.callbacks.TensorBoard(
    log_dir='./logs', write_graph=True, write_images=False)

model.fit(x_train, y_train, epochs=5, callbacks=[tensorboard])

All you need to do to adjust it, is to add the following snippet at the top:

1
2
3
4
import neptune

ctx = neptune.Context()
ctx.integrate_with_tensorflow()

Your metrics are now logged to Neptune:

image

See also