tf.compat.v1.train.MonitoredSession
Объект, подобный сеансу, который обрабатывает инициализацию, восстановление и хуки.
tf.compat.v1.train.MonitoredSession(
session_creator=None, hooks=None, stop_grace_period_secs=120
)
Перейти на TF2
Этот API несовместим с eager execution и tf.function. Чтобы перейти на TF2, перепишите код так, чтобы он был совместим с eager execution. Инструкции по замене вызовов Session.run см. в руководстве по миграции. В Keras хуки сеанса можно заменить обратными вызовами (например, см. блокнот о хуке журналирования). Подробнее см. в разделе Повышение производительности с помощью tf.function.
Описание
Пример использования:
saver_hook = CheckpointSaverHook(...)
summary_hook = SummarySaverHook(...)
with MonitoredSession(session_creator=ChiefSessionCreator(...),
hooks=[saver_hook, summary_hook]) as sess:
while not sess.should_stop():
sess.run(train_op)
Инициализация: при создании контролируемый сеанс выполняет следующие действия в указанном порядке:
- вызывает
hook.begin()для каждого заданного хука - завершает граф с помощью
scaffold.finalize() - создает сеанс
- инициализирует модель с помощью операций инициализации, предоставленных
Scaffold - восстанавливает переменные, если существует контрольная точка
- запускает исполнители очередей
- вызывает
hook.after_create_session()
Выполнение: при вызове run() контролируемый сеанс выполняет следующие действия:
- вызывает
hook.before_run() - вызывает TensorFlow
session.run()с объединенными fetches и feed_dict - вызывает
hook.after_run() - возвращает результат
session.run(), запрошенный пользователем - если происходит
AbortedErrorилиUnavailableError, сеанс восстанавливается или повторно инициализируется перед повторным выполнением вызова run()
Выход: при close() контролируемый сеанс выполняет следующие действия в указанном порядке:
- вызывает
hook.end() - закрывает исполнители очередей и сеанс
- подавляет ошибку
OutOfRange, которая указывает, что все входные данные обработаны, если monitored_session используется как контекст
Как задавать аргументы tf.compat.v1.Session:
- В большинстве случаев аргументы сеанса можно задать следующим образом:
MonitoredSession( session_creator=ChiefSessionCreator(master=..., config=...))
- В распределенной среде для рабочего узла, не являющегося главным, можно использовать следующий вариант:
MonitoredSession( session_creator=WorkerSessionCreator(master=..., config=...))
Пример использования для главного или рабочего узла см. в MonitoredTrainingSession.
Примечание: Это не tf.compat.v1.Session. Например, для него невозможно выполнить следующие действия:
- его нельзя задать в качестве сеанса по умолчанию;
- его нельзя передать в saver.save;
- его нельзя передать в tf.train.start_queue_runners.
| Аргументы | |
|---|---|
session_creator | Фабричный объект для создания сеанса. Обычно это ChiefSessionCreator, используемый по умолчанию. |
hooks | Итерируемый объект, содержащий объекты `SessionRunHook'. |
| Возвращает | |
|---|---|
| Объект MonitoredSession. |
| Атрибуты | |
|---|---|
graph | Граф, запущенный в этом сеансе. |
Дочерние классы
Методы
close
close()
run
run(
fetches, feed_dict=None, options=None, run_metadata=None
)
Выполняет операции в контролируемом сеансе.
Этот метод полностью совместим с методом tf.Session.run().
| Аргументы | |
|---|---|
fetches | То же, что и tf.Session.run(). |
feed_dict | То же, что и tf.Session.run(). |
options | То же, что и tf.Session.run(). |
run_metadata | То же, что и tf.Session.run(). |
| Возвращает | |
|---|---|
То же, что и tf.Session.run(). |
run_step_fn
run_step_fn(
step_fn
)
Выполняет операции с помощью функции шага.
| Аргументы | |
|---|---|
step_fn | Функция или метод с одним аргументом типа StepContext. Функция может использовать методы аргумента для выполнения вычислений с доступом к необработанному сеансу. Возвращаемое значение step_fn будет возвращено из run_step_fn, если не запрошена остановка. В этом случае следующий вызов should_stop вернет True. Пример использования:
```python
with tf.Graph().as_default():
c = tf.compat.v1.placeholder(dtypes.float32)
v = tf.add(c, 4.0)
w = tf.add(c, 0.5)
def step_fn(step_context):
a = step_context.session.run(fetches=v, feed_dict={c: 0.5})
if a <= 4.5:
step_context.request_stop()
return step_context.run_with_hooks(fetches=w,
feed_dict={c: 0.1})
with tf.MonitoredSession() as session:
while not session.should_stop():
a = session.run_step_fn(step_fn)
```
Hooks interact with the `run_with_hooks()` call inside the
`step_fn` as they do with a `MonitoredSession.run` call.
|
| Возвращает | |
|---|---|
Возвращает значение, возвращенное step_fn. |
| Вызывает исключения | |
|---|---|
StopIteration | если step_fn вызвал request_stop(). Это исключение может быть перехвачено с помощью with tf.MonitoredSession() для закрытия сеанса. |
ValueError | если step_fn не имеет единственного аргумента с именем step_context. В случае принадлежности объекта у него также может быть self. |
should_stop
should_stop()
__enter__
__enter__()
__exit__
__exit__(
exception_type, exception_value, traceback
)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/MonitoredSession