Второе поколение библиотеки глубокого обучения TensorFlow принесло много сюрпризов, одним из которых является способ записи значений переменных для последующей визуализации. В этой статье я внесу ясность в данный вопрос.
Рассмотрим, как происходит запись промежуточных результатов вычисления последовательности чисел Фибоначчи (подробнее скрипт рассмотрен ранее) в старой версии TensorFlow. Для каждой переменной с помощью команды из модуля tf.summary (например, для чисел это tf.summary.scalar) создается узел, отслеживающий ее значение. Сохранение осуществляет объект записывающего устройства, который создается путем вызова tf.summary.FileWriter(имя_папки). Затем уже в рамках сессии извлекается значение отслеживающего узла и оно отправляется в записывающий объект методом add_summary (также принимает номер шага, на котором получено текущее значение переменной). Ниже представлен итоговый код скрипта:
Для осуществления аналогичных действий во втором поколении TensorFlow потребуется написать другой код, обусловленный не столько изменением функций, сколько вводом нового стиля программирования (императивного, подробнее здесь):
В данном случае потребуется создать объект пишущего устройства с указанием имени папки, а также добавить узлы, отслеживающие значения переменных (также принимают номер шага, этот функционал мигрировал из add_summary). Запись буферизованных данных инициируется методом flush.