Как "reset" данные тензора после уничтожения экземпляра tensorflow
Я тестирую разные гиперпараметры для модели cnn, которую я построил, но у меня есть небольшое раздражение при просмотре резюме в Tensorboard. Проблема заключается в том, что данные просто "добавляются" в последовательные прогоны, поэтому функции приводят к странной суперпозиции, если я не вижу эту информацию как "относительную", а не "пошаговую". См. Здесь:
![X Тип: Шаг]()
![X Тип: Относительный]()
Я пробовал убить процесс тензора и стирать файлы журнала, но, похоже, этого недостаточно.
Итак, вопрос в том, как я reset эту информацию?
Спасибо!!
Ответы
Ответ 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)