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

Как "reset" данные тензора после уничтожения экземпляра tensorflow

Я тестирую разные гиперпараметры для модели cnn, которую я построил, но у меня есть небольшое раздражение при просмотре резюме в Tensorboard. Проблема заключается в том, что данные просто "добавляются" в последовательные прогоны, поэтому функции приводят к странной суперпозиции, если я не вижу эту информацию как "относительную", а не "пошаговую". См. Здесь:

X Тип: Шаг

X Тип: Относительный

Я пробовал убить процесс тензора и стирать файлы журнала, но, похоже, этого недостаточно.

Итак, вопрос в том, как я reset эту информацию?

Спасибо!!

4b9b3361

Ответ 1

Примечание. Решение, которое вы опубликовали (стереть файлы журнала TensorBoard и убить процесс), будет работать, но это не является предпочтительным, поскольку оно разрушает историческую информацию о вашем обучении.

Вместо этого вы можете записать каждое новое задание на обучение в новый подкаталог (из вашего каталога журнала верхнего уровня). Затем TensorBoard рассмотрит каждое задание на новом "прогоне" и создаст хорошее сравнение, чтобы вы могли видеть, как тренировка различалась между итерациями вашей модели.

Пример: https://www.tensorflow.org/tensorboard/

Ответ 2

Хорошо, по какой-то причине это не сработало, но теперь это произошло:

Вы должны удалить файлы журнала Tensorboard и уничтожить его процесс

После того, как вы завершили процесс, запустите fuser 6006/tcp -k, чтобы освободить порт 6006 (если вы в Linux) и пожар тензограмм снова.

Ответ 3

Да, я считаю, что в конечном итоге этот аспект положительный. Например, в моем script я автоматизирую новые журналы запуска через datetime:

from datetime import datetime
now = datetime.now()
logdir = "tf_logs/.../" + now.strftime("%Y%m%d-%H%M%S") + "/"

Затем при запуске TensorBoard вы можете щелкнуть различные запуски вкл/выкл, если вы запустили TensorBoard в родительском каталоге.

Если вы знаете, вы не заботитесь о предыдущем запуске и не хотите, чтобы это было из вашей жизни, тогда да, вам нужно удалить файлы событий и выдержать необычно долгий процесс убийства и перезапуска TensorBoard.

Ответ 4

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

writer.add_graph(graph=sess.graph)

В моем случае речь шла не о файлах журналов, а о контексте Jupyter Notebook.

Я выяснил, что после нескольких запусков ячейки Jupyter с определением Графа график не был сброшен, а появился в контексте как дубликат, поэтому я добавил

tf.reset_default_graph()

до начала построения вычислительного графа.

Надеюсь, это поможет.

Ответ 5

Я только что решил решение этой проблемы. Просто поместите каждый файл Events.out в отдельную папку внутри вашего каталога журналов. И вы получите приятную визуализацию в тензограмме с каждым прогоном другого цвета.

Ответ 6

Добавьте следующий код в свой код, и он автоматически должен будет reset ваш тензор.

if tf.gfile.Exists(dirpath):
   tf.gfile.DeleteRecursively(dirpath) 

Это приведет к удалению предыдущих журналов.

Ответ 7

Была похожая проблема, которая приводила к ошибке: "Вы должны указать значение для тензора-заполнителя" dens_input "с типом float и формой dtype". Эта конкретная проблема обсуждалась здесь. Предложение, которое работало для меня, использовало:

from keras.backend import clear_session
# Before instantiating a tf.data.Dataset obj & before model creation, call:
clear_session()

Также убедитесь, что вы используете уникальные имена для каждой модели TensorBoard log_dir. Затем, чтобы просмотреть все модели, запустите TensorBoard из терминала в родительском каталоге файлов журналов, т.е.

tensorboard --logdir <projDir>/logs/tf_log

Ответ 8

Это автоматически удаляет каталог журнала.

import shutil

shutil.rmtree('log_dir', ignore_errors=True)