tf.compat.v1.Session
Класс для запуска операций TensorFlow.
tf.compat.v1.Session(
target='', graph=None, config=None
)
Объект Session encapsulates окружение, в котором выполняются объекты Operation, и вычисляются объекты Tensor. Например:
tf.compat.v1.disable_eager_execution() # need to disable eager in TF2.x # Build a graph. a = tf.constant(5.0) b = tf.constant(6.0) c = a * b # Launch the graph in a session. sess = tf.compat.v1.Session() # Evaluate the tensor `c`. print(sess.run(c)) # prints 30.0
Сессия может владеть ресурсами, такими как tf.Variable, tf.queue.QueueBase и tf.compat.v1.ReaderBase. Важно освободить эти ресурсы, когда они больше не требуются. Для этого вызовите метод tf.Session.close в сессии или используйте сессию как менеджер контекста. Следующие два примера эквивалентны:
# Using the `close()` method. sess = tf.compat.v1.Session() sess.run(...) sess.close() # Using the context manager. with tf.compat.v1.Session() as sess: sess.run(...)
Протокол буфера ConfigProto предоставляет различные параметры конфигурации для сессии. Например, чтобы создать сессию, использующую мягкие ограничения для размещения устройств и регистрирующую полученные решения о размещении, создайте сессию следующим образом:
# Launch the graph in a session that allows soft device placement and
# logs the placement decisions.
sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(
allow_soft_placement=True,
log_device_placement=True))
| Args | |
|---|---|
target | (Необязательно.) Движок выполнения, к которому нужно подключиться. По умолчанию используется встроенный движок. См. Распределённый TensorFlow для получения дополнительных примеров. |
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()
Закрывает эту сессию.
Вызов этого метода освобождает все ресурсы, связанные с сессией.
| Возможные исключения | |
|---|---|
tf.errors.OpError | Или один из его подклассов, если при закрытии сессии TensorFlow возникнет ошибка. |
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.
| Args | |
|---|---|
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})
| Args | |
|---|---|
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. |
reset
@staticmethod
reset(
target, containers=None, config=None
)
Сбрасывает контейнеры ресурсов на target, и закрывает все подключенные сессии.
Контейнер ресурсов распределяется по всем рабочим узлам в том же кластере, что и target. Когда контейнер ресурсов на target сбрасывается, ресурсы, связанные с этим контейнером, будут очищены. В частности, все переменные в контейнере станут неопределёнными: они теряют свои значения и формы.
ПРИМЕЧАНИЕ:
(i) reset() в настоящее время реализован только для распределенных сессий. (ii) Все сессии на главном узле, имеющие имя, указанное в target, будут закрыты.
Если контейнеры ресурсов не указаны, все контейнеры сбрасываются.
| Аргументы | |
|---|---|
target | Движок выполнения, к которому нужно подключиться. |
None | Список имен строк контейнеров ресурсов или None, если необходимо сбросить все контейнеры. |
config | (Необязательно.) Протокол с конфигурационными параметрами. |
| Исключения | |
|---|---|
tf.errors.OpError | Или один из его подклассов, если при сбросе контейнеров произошла ошибка. |
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, значение может быть скаляром Python, строкой, списком или массивом numpy, которые можно преобразовать в тот же тип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 , которого нет. |
__enter__
__enter__()
__exit__
__exit__(
exec_type, exec_value, exec_tb
)
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/compat/v1/Session