Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.Session

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

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

Переход на TF2

Внимание: Данный API был разработан для TensorFlow v1. Продолжая чтение, вы узнаете, как перейти с этого API на эквивалент в чистом TensorFlow v2. Обратитесь к руководству по миграции TensorFlow v1 в TensorFlow v2 за инструкциями по миграции остальной части кода.

Session не работает с выполнением в режиме eager или tf.function, и его нельзя вызывать напрямую. Чтобы перенести код, использующий сессии, в TF2, перепишите его без использования сессий. См. руководство по миграции по замене вызовов Session.run.

Описание

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

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
)

Возвращает вызываемый объект 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, возвращаемый вызываемый объект Callable сможет принимать 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 может быть одним элементом графа или вложенным списком, кортежем, именованным кортежем, словарем или 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, форма значения проверяется на совместимость с этим 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
)

© 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/Session

Spec-Zone.ru

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