Ответ 1
Это может быть более общий вопрос о том, что такое крючки.
Крючки называются соответственно в том смысле, что они позволяют способ "подключиться" к определенным точкам выполнения программы. Таким образом, вы можете запустить функцию или выполнить регистрацию после выполнения определенной части кода.
Чтобы привести пример, я перечислил описание SessionRunHook, которое вы упомянули, и ссылку на его документацию. Это позволяет вам "подключиться" к указанным пунктам.
SessionRunHooks полезны для отслеживания обучения, прогресса в отчетах, раннего запроса остановка и многое другое. SessionRunHooks используют шаблон наблюдателя и уведомляют следующие пункты:
- при запуске сеанса
- перед вызовом
session.run()
- после вызова
session.run()
- когда сессия закрыта
SessionRunHook инкапсулирует кусок многоразового/составного вычисления, который
может вызвать вызов MonitoredSession.run()
. Крючок может добавить любой
ops-or-tensor/feeds для вызова вызова, и когда вызов вызова заканчивается с успехом
получает запрошенные результаты. Крюкам разрешено добавлять ops к графику в
hook.begin()
. График завершается после вызова метода begin()
.
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/session_run_hook.py