Spec-Zone.ru › TensorFlow 2.3

tf.compat.v1.Session

Класс для запуска операций TensorFlow.

tf.compat.v1.Session(
    target='', graph=None, config=None
)

Объект Session описывает среду, в которой выполняются объекты 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))
Аргументы
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
)

Возвращает вызываемую функцию, которая выполняет определённый шаг.

Возвращаемая вызываемая функция примет 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.

reset

Просмотреть исходный код

@staticmethod
reset(
    target, containers=None, config=None
)

Сбрасывает контейнеры ресурсов на target, и закрывает все подключенные сеансы.

Контейнер ресурсов распределяется по всем рабочим узлам в том же кластере, что и target. Когда контейнер ресурсов на target сбрасывается, ресурсы, связанные с этим контейнером, будут очищены. В частности, все переменные в контейнере станут неопределёнными: они потеряют свои значения и формы.

ПРИМЕЧАНИЕ:

(i) reset() в настоящее время реализован только для распределённых сеансов. (ii) Любые сеансы на главном узле, указанные по имени target, будут закрыты.

Если контейнеры ресурсов не указаны, все контейнеры сбрасываются.

Аргументы
target Движок выполнения для подключения.
containers Список имён контейнеров ресурсов или 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, будет проверена совместимость формы значения с этим 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.3/api_docs/python/tf/compat/v1/Session

Spec-Zone.ru

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