Да, в TensorFlow v2 есть более простой и элегантный способ использования сводок.
Сначала создайте средство записи файлов, в котором будут храниться журналы (например, в каталоге с именем log_dir
):
writer = tf.summary.create_file_writer(log_dir)
Везде, где вы хотите что-то записать в файл журнала (например, скаляр), используйте ваш старый добрый tf.summary.scalar
в контексте, созданном автором. Предположим, вы хотите сохранить значение scalar_1
для шага i
:
with writer.as_default():
tf.summary.scalar('scalar_1', scalar_1, step=i)
Вы можете открывать столько контекстов, сколько захотите, внутри или снаружи тренировочного цикла.
Пример:
# create the file writer object
writer = tf.summary.create_file_writer(log_dir)
for i, (x, y) in enumerate(train_set):
with tf.GradientTape() as tape:
y_ = model(x)
loss = loss_func(y, y_)
grads = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
# write the loss value
with writer.as_default():
tf.summary.scalar('training loss', loss, step=i+1