Spec-Zone.ru › TensorFlow 2.4

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API