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 execution, ни с tf.function, и вы не должны вызывать его напрямую. Чтобы перенести код, использующий сеансы, на TF2, перепишите его без них. Инструкции по замене вызовов Session.run см. в руководстве по переходу.

Описание

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

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

Объект 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
)

Возвращает вызываемый объект 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 может быть одним элементом графа или произвольно вложенным списком, кортежем, именованным кортежем, словарем или 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, форма значения будет проверена на совместимость с заполнителем.
  • Если ключ — это 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__() -> '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