Подтвердить что ты не робот

Как вручную создать tf.Summary()

Я часто хочу записывать переменные python - в отличие от tf-тензоров.

В документах говорится, что "вы можете передать буфер протокола tf.Summary, который вы заполняете своими собственными данными", но нет документов для tf.Summary, и я не мог понять, как его использовать.

Кто-нибудь знает, как создать Scalar summary таким образом?

4b9b3361

Ответ 1

Вы можете создать объект tf.Summary в своей программе Python и записать его в тот же объект tf.train.SummaryWriter, который принимает ваши итоговые результаты, полученные TensorFlow, с помощью SummaryWriter.add_summary().

Класс tf.Summary представляет собой оболочку буфера протокола Python для буфера протокола Summary. Каждый Summary содержит список буферов протокола tf.Summary.Value, каждый из которых имеет тег и либо "простое" (скалярное) значение с плавающей запятой, и , гистограмма или аудио фрагмент, Например, вы можете сгенерировать скалярное резюме из объекта Python следующим образом:

writer = tf.train.SummaryWriter(...)
value = 37.0
summary = tf.Summary(value=[
    tf.Summary.Value(tag="summary_tag", simple_value=value), 
])
writer.add_summary(summary)

Ответ 2

Если вы хотите записать значение python, вам нужно создать местозаполнитель, который должен быть загружен при запуске tf.Summary op.

Здесь код отключен

value_ = tf.placeholder(tf.float32, [])
summary_op = tf.scalar_summary("value_log", value_)
my_python_variable = 10
# define everything else you need...
# ...
with tf.Session() as sess:
    for i in range(0, 10):
        sess.run(summary_op, feed_dict={value_: my_python_variable*i})

Ответ 3

Мне нужно было сделать много обновлений для пользовательской сводной переменной во время обучения, поэтому я применил мою так:

До цикла:

writer = tf.summary.FileWriter(log_folder)
accuracy = None
accuracy_summary = tf.Summary()
accuracy_summary.value.add(tag='accuracy', simple_value=accuracy)

Внутри цикла:

if i%20000 == 0:
    accuracy = get_accuracy()
    accuracy_summary.value[0].simple_value = accuracy
    writer.add_summary(accuracy_summary, i)

Я предполагаю, что индексы value находятся в том порядке, в котором переменные были добавлены в сводку.