Spec-Zone.ru › TensorFlow 1.15

tf.Session

Класс для выполнения операций TensorFlow.

Просмотр псевдонимов

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения дополнительных сведений.

tf.compat.v1.Session

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

Объект Session encapsulates the environment in which Operation objects are executed, and Tensor objects are evaluated. Например:

# 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))

Сессия может владеть ресурсами, такими как 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
)

Возвращает вызываемый Python-объект, выполняющий определённый шаг.

Возвращаемый вызываемый объект будет принимать len(feed_list) аргументов, типы которых должны быть совместимы со значениями подпитки для соответствующих элементов feed_list. Например, если элемент i из feed_list является tf.Tensor, i-ый аргумент возвращаемого вызываемого объекта должен быть numpy ndarray (или чем-то, что можно преобразовать в ndarray) с соответствующим типом элемента и формой. Подробности допустимых типов ключей и значений подпитки см. в tf.Session.run.

Возвращаемый вызываемый объект будет иметь тот же тип возвращаемого значения, что и tf.Session.run(fetches, ...). Например, если fetches является tf.Tensor, вызываемый объект вернёт numpy ndarray; если 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, что полезно в определённых случаях (профилирование и отладка), но приведёт к ощутимому замедлению производительности вызываемого объекта. По умолчанию: 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 ndarray, содержащим значение этого тензора.
  • Разреженный тензор tf.SparseTensor. Соответствующее значение будет tf.compat.v1.SparseTensorValue, содержащим значение этого разреженного тензора.
  • Операция get_tensor_handle. Соответствующее значение будет numpy ndarray, содержащим дескриптор этого тензора.
  • Имя тензора или операции в графе 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 ndarray, которое может быть преобразовано в тот же dtype что и тензор. Кроме того, если ключ - tf.compat.v1.placeholder, проверяется совместимость формы значения с этим заполнителем.
  • Если ключ - tf.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/r1.15/api_docs/python/tf/Session

Spec-Zone.ru

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