tf.compat.v1.InteractiveSession
Объект TensorFlow Session для использования во взаимодействующих контекстах, таких как оболочка.
tf.compat.v1.InteractiveSession(
target='', graph=None, config=None
)
Единственное отличие от обычной Session заключается в том, что InteractiveSession устанавливает себя в качестве сессии по умолчанию при создании. Методы tf.Tensor.eval и tf.Operation.run будут использовать эту сессию для выполнения операций.
Это удобно в интерактивных оболочках и IPython-тетрадках, поскольку позволяет избежать необходимости передачи явного объекта Session для выполнения операций.
Например:
sess = tf.compat.v1.InteractiveSession() a = tf.constant(5.0) b = tf.constant(6.0) c = a * b # We can just use 'c.eval()' without passing 'sess' print(c.eval()) sess.close()
Обратите внимание, что обычная сессия устанавливает себя в качестве сессии по умолчанию, когда она создаётся в инструкции with. Общим случаем использования в неинтерактивных программах является следование этому шаблону:
a = tf.constant(5.0) b = tf.constant(6.0) c = a * b with tf.compat.v1.Session(): # We can also use 'c.eval()' here. print(c.eval())
| Аргументы | |
|---|---|
target | (Необязательно.) Движок выполнения для подключения. По умолчанию используется движок в том же процессе. |
graph | (Необязательно.) Graph для запуска (описано выше). |
config | (Необязательно) ConfigProto протокол, используемый для конфигурации сессии. |
| Атрибуты | |
|---|---|
graph | Граф, который был запущен в этой сессии. |
graph_def | Сериализуемая версия базового графа TensorFlow. |
sess_str | Процесс TensorFlow, к которому будет подключена эта сессия. |
Методы
as_default
as_default()
Возвращает контекстный менеджер, который делает этот объект сессией по умолчанию.
Используйте с ключевым словом with для указания того, что вызовы tf.Operation.run или tf.Tensor.eval должны выполняться в этой сессии.
c = tf.constant(..) sess = tf.compat.v1.Session() with sess.as_default(): assert tf.compat.v1.get_default_session() is sess print(c.eval())
Чтобы получить текущую сессию по умолчанию, используйте tf.compat.v1.get_default_session.
Примечание: Контекстный менеджер as_default не закрывает сессию при выходе из контекста, и вы должны явно закрыть сессию.
c = tf.constant(...) sess = tf.compat.v1.Session() with sess.as_default(): print(c.eval()) # ... with sess.as_default(): print(c.eval()) sess.close()
В качестве альтернативы можно использовать with tf.compat.v1.Session(): для создания сессии, которая автоматически закрывается при выходе из контекста, включая ситуации с необработанными исключениями.
Примечание: Сессия по умолчанию является свойством текущей нити. Если вы создаёте новую нить и хотите использовать сессию по умолчанию в этой нити, вы должны явно добавить with sess.as_default(): в функцию этой нити.
Примечание: Вход в блокwith sess.as_default():не влияет на текущий граф по умолчанию. Если вы используете несколько графиков, иsess.graphотличается от значенияtf.compat.v1.get_default_graph, вы должны явно войти в блокwith sess.graph.as_default():для того, чтобыsess.graphстал графом по умолчанию.
| Возвращает | |
|---|---|
| Контекстный менеджер, использующий эту сессию в качестве сессии по умолчанию. |
close
close()
Закрывает InteractiveSession.
list_devices
list_devices()
Отображает доступные устройства в этой сессии.
devices = sess.list_devices() for d in devices: print(d.name)
Где:
Каждый элемент в списке имеет следующие свойства
-
name: Строка с полным именем устройства. Пример:/job:worker/replica:0/task:3/device:CPU:0 -
device_type: Тип устройства (например,CPU,GPU,TPU.) -
memory_limit: Максимальный объём памяти, доступный на устройстве. Примечание: в зависимости от устройства, фактически доступная память может быть существенно меньше.
| Возможные исключения | |
|---|---|
tf.errors.OpError | Если произошла ошибка (например, сессия находится в недопустимом состоянии или возникли сетевые ошибки). |
| Возвращает | |
|---|---|
| Список устройств в сессии. |
make_callable
make_callable(
fetches, feed_list=None, accept_options=False
)
Возвращает вызываемый объект Python, который выполняет определённый шаг.
Возвращаемый вызываемый объект примет len(feed_list) аргументов, типы которых должны быть совместимы со значениями данных для соответствующих элементов feed_list. Например, если элемент i из feed_list является tf.Tensor, i-й аргумент возвращаемого вызываемого объекта должен быть массивом NumPy (или чем-то преобразуемым в массив NumPy) с соответствующим типом элементов и формой. См. tf.Session.run для получения подробной информации о допустимых типах ключей и значений данных.
Возвращаемый вызываемый объект будет иметь тот же тип возвращаемого значения, что и tf.Session.run(fetches, ...). Например, если fetches является tf.Tensor, вызываемый объект вернёт массив NumPy; если fetches является tf.Operation, он вернёт None.
| Аргументы | |
|---|---|
fetches | Значение или список значений для извлечения. См. tf.Session.run для получения подробной информации о допустимых типах извлекаемых данных. |
feed_list | (Необязательно.) Список ключей feed_dict. См. tf.Session.run для получения подробной информации о допустимых типах ключей данных. |
accept_options | (Необязательно.) Если True, возвращаемый вызываемый объект сможет принять tf.compat.v1.RunOptions и tf.compat.v1.RunMetadata в качестве необязательных аргументов options и run_metadata, соответственно, с той же синтаксической и смысловой структурой, что и tf.Session.run. Это полезно для некоторых случаев использования (профилирование и отладка), но приведёт к заметному замедлению производительности вызываемого объекта Callable. По умолчанию: False. |
| Возвращает | |
|---|---|
Функция, которая при вызове выполнит шаг, определённый feed_list и fetches в этой сессии. |
| Возможные исключения | |
|---|---|
TypeError | Если fetches или feed_list не могут быть интерпретированы как аргументы для tf.Session.run. |
partial_run
partial_run(
handle, fetches, feed_dict=None
)
Продолжает выполнение с дополнительными данными и запросами.
ЭКСПЕРИМЕНТАЛЬНО, может быть изменено.
Чтобы использовать частичное выполнение, пользователь сначала вызывает partial_run_setup(), а затем последовательность partial_run(). partial_run_setup определяет список данных и запросов, которые будут использоваться в последующих вызовах partial_run.
Необязательный аргумент feed_dict позволяет вызывающей стороне переопределить значения тензоров в графе. См. run() для получения дополнительной информации.
Ниже приведён простой пример:
a = array_ops.placeholder(dtypes.float32, shape=[])
b = array_ops.placeholder(dtypes.float32, shape=[])
c = array_ops.placeholder(dtypes.float32, shape=[])
r1 = math_ops.add(a, b)
r2 = math_ops.multiply(r1, c)
h = sess.partial_run_setup([r1, r2], [a, b, c])
res = sess.partial_run(h, r1, feed_dict={a: 1, b: 2})
res = sess.partial_run(h, r2, feed_dict={c: res})
| Аргументы | |
|---|---|
handle | Дескриптор последовательности частичных запусков. |
fetches | Одиночный элемент графа, список элементов графа или словарь, значения которого являются элементами графа или списками элементов графа (см. документацию для run). |
feed_dict | Словарь, сопоставляющий элементы графа со значениями (описано выше). |
| Возвращает | |
|---|---|
Либо одно значение, если fetches является одиночным элементом графа, либо список значений, если fetches является списком, либо словарь с теми же ключами, что и fetches, если это словарь (см. документацию для run). |
| Возможные исключения | |
|---|---|
tf.errors.OpError | Или один из его подклассов при ошибке. |
partial_run_setup
partial_run_setup(
fetches, feeds=None
)
Настраивает граф с данными и запросами для частичного выполнения.
ЭКСПЕРИМЕНТАЛЬНО, может быть изменено.
В отличие от run, feeds задаёт только элементы графа. Тензоры будут предоставлены последующими вызовами partial_run.
| Аргументы | |
|---|---|
fetches | Один элемент графика или список элементов графика. |
feeds | Один элемент графика или список элементов графика. |
| Возвращаемое значение | |
|---|---|
| Детектор частичного выполнения. |
| Исключения | |
|---|---|
RuntimeError | Если этот Session находится в недопустимом состоянии (например, закрыт). |
TypeError | Если ключи fetches или feed_dict имеют неподходящий тип. |
tf.errors.OpError | Или один из его подклассов, если произошла ошибка TensorFlow. |
run
run(
fetches, feed_dict=None, options=None, run_metadata=None
)
Выполняет операции и вычисляет тензоры в fetches.
Этот метод выполняет один "шаг" вычисления TensorFlow, выполняя необходимый фрагмент графика для выполнения каждой Operation и вычисления каждого Tensor в fetches, подставляя значения в feed_dict для соответствующих входных значений.
Аргумент fetches может быть одиночным элементом графика или произвольно вложенным списком, кортежем, namedtuple, словарем или OrderedDict, содержащими элементы графика на своих листьях. Элемент графика может быть одного из следующих типов:
tf.Operation. Соответствующее полученное значение будетNone.tf.Tensor. Соответствующее полученное значение будет массивом numpy, содержащим значение этого тензора.tf.sparse.SparseTensor. Соответствующее полученное значение будетtf.compat.v1.SparseTensorValue, содержащим значение этого разреженного тензора.get_tensor_handleоперация. Соответствующее полученное значение будет массивом numpy, содержащим дескриптор этого тензора.string- это имя тензора или операции в графе.
Возвращаемое значение run() имеет ту же форму, что и аргумент fetches, где листья заменены соответствующими значениями, возвращаемыми TensorFlow.
Пример:
a = tf.constant([10, 20])
b = tf.constant([1.0, 2.0])
# 'fetches' can be a singleton
v = session.run(a)
# v is the numpy array [10, 20]
# 'fetches' can be a list.
v = session.run([a, b])
# v is a Python list with 2 numpy arrays: the 1-D array [10, 20] and the
# 1-D array [1.0, 2.0]
# 'fetches' can be arbitrary lists, tuples, namedtuple, dicts:
MyData = collections.namedtuple('MyData', ['a', 'b'])
v = session.run({'k1': MyData(a, b), 'k2': [b, a]})
# v is a dict with
# v['k1'] is a MyData namedtuple with 'a' (the numpy array [10, 20]) and
# 'b' (the numpy array [1.0, 2.0])
# v['k2'] is a list with the numpy array [1.0, 2.0] and the numpy array
# [10, 20].
Необязательный аргумент feed_dict позволяет вызывающей стороне переопределить значение тензоров в графе. Каждый ключ в feed_dict может быть одного из следующих типов:
- Если ключ является
tf.Tensor, значение может быть скаляром, строкой, списком или массивом numpy Python, который может быть преобразован в тот жеdtype, что и этот тензор. Кроме того, если ключ являетсяtf.compat.v1.placeholder, форма значения будет проверена на совместимость с заполнителем. - Если ключ является
tf.sparse.SparseTensor, значение должно бытьtf.compat.v1.SparseTensorValue. - Если ключ является вложенным кортежем
TensorилиSparseTensor, значение должно быть вложенным кортежем с той же структурой, который отображается на их соответствующие значения, как указано выше.
Каждое значение в feed_dict должно быть преобразуемо в массив numpy типа данных соответствующего ключа.
Необязательный аргумент options ожидает протокол [RunOptions]. Параметры позволяют контролировать поведение этого конкретного шага (например, включать профайлирование).
Необязательный аргумент run_metadata ожидает протокол [RunMetadata]. В подходящих случаях не-тензорный вывод этого шага будет собран там. Например, когда пользователи включают профайлирование в options, информация о профилировании будет собрана в этом аргументе и возвращена обратно.
| Аргументы | |
|---|---|
fetches | Один элемент графика, список элементов графика или словарь, значения которого являются элементами графика или списками элементов графика (описано выше). |
feed_dict | Словарь, который отображает элементы графика на значения (описано выше). |
options | Протокол [RunOptions]. |
run_metadata | Протокол [RunMetadata]. |
| Возвращаемое значение | |
|---|---|
Либо одно значение, если fetches является одиночным элементом графика, либо список значений, если fetches является списком, или словарь с теми же ключами, что и fetches , если это словарь (описано выше). Порядок, в котором оцениваются операции fetches внутри вызова, не определен. |
| Исключения | |
|---|---|
RuntimeError | Если этот Session находится в недопустимом состоянии (например, закрыт). |
TypeError | Если ключи fetches или feed_dict имеют неподходящий тип. |
ValueError | Если ключи fetches или feed_dict неверны или ссылаются на Tensor , которого нет. |
© 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/versions/r2.9/api_docs/python/tf/compat/v1/InteractiveSession