Spec-Zone.ru › TensorFlow

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.

Описание

Используется в блокнотах

Используется в руководстве Используется в учебниках
  • Миграция контрольных точек модели
  • Проверка корректности и численного эквивалента
  • Миграция процесса SavedModel
  • Отладка переносимой в TensorFlow 2 обучающейся конвейерной линии
  • Миграция вашего кода TFLite в TF2
  • Демонстрация Universal Sentence Encoder-Lite
  • Генерация изображений с небольшим объемом данных с помощью S3GAN
  • Генерация изображений с помощью BigBiGAN
  • Генерация изображений с помощью BigGAN
  • Исследование встроенных данных TF-Hub CORD-19 Swivel

Объект 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 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, возвращаемая функция 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
)

Продолжает выполнение с дополнительными данными и результатами. (устарело)

Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена после 2023-06-01. Инструкции по обновлению: Эта функция устарела, и мы не ожидаем добавления к ней новой функциональности. Пожалуйста, не делайте зависимость своего кода от этой функции.
Примечание: Эта функция устарела, и мы не ожидаем добавления к ней новой функциональности. Пожалуйста, не делайте зависимость своего кода от этой функции.

Это ЭКСПЕРИМЕНТАЛЬНО и может быть изменено.

Для использования частичного выполнения пользователь сначала вызывает 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
)

Настраивает граф с данными и результатами для частичного выполнения. (устарело)

Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена после 2023-06-01. Инструкции по обновлению: Эта функция устарела, и мы не ожидаем добавления к ней новой функциональности. Пожалуйста, не делайте зависимость своего кода от этой функции.
Примечание: Эта функция устарела, и мы не ожидаем добавления к ней новой функциональности. Пожалуйста, не делайте зависимость своего кода от этой функции.

Это ЭКСПЕРИМЕНТАЛЬНО и может быть изменено.

Обратите внимание, что в отличие от 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.sparse.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, форма значения будет проверена на совместимость с этим placeholder.
  • Если ключ — tf.sparse.SparseTensor, значение должно быть tf.compat.v1.SparseTensorValue.
  • Если ключ — вложенная кортеж из Tensor или SparseTensor, значение должно быть вложенной кортежом с той же структурой, сопоставленной с соответствующими значениями, как указано выше.

Каждое значение в feed_dict должно быть преобразуемо в массив numpy типа dtype соответствующего ключа.

Необязательный аргумент options ожидает [RunOptions] протокол. Опции позволяют управлять поведением этого конкретного шага (например, включение отслеживания).

Необязательный аргумент run_metadata ожидает [RunMetadata] протокол. Когда это уместно, нетензорный результат этого шага будет собран там. Например, когда пользователи включают отслеживание в options, информация о профилировании будет собрана в этом аргументе и возвращена обратно.

Args
fetches Один элемент графа, список элементов графа или словарь, значениями которого являются элементы графа или списки элементов графа (описано выше).
feed_dict Словарь, который сопоставляет элементы графа с значениями (описано выше).
options [RunOptions] протокол
run_metadata [RunMetadata] протокол
Returns
Либо одно значение, если fetches — это один элемент графа, либо список значений, если fetches — это список, либо словарь с теми же ключами, что и fetches, если это словарь (описано выше). Порядок, в котором выполняются операции fetches внутри вызова, не определен.
Raises
RuntimeError Если этот Session находится в недопустимом состоянии (например, закрыт).
TypeError Если ключи fetches или feed_dict имеют неподходящий тип.
ValueError Если ключи fetches или feed_dict неверны или ссылаются на Tensor, который не существует.

__enter__

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

__enter__() -> 'Session'

__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/api_docs/python/tf/compat/v1/Session

Spec-Zone.ru

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