tf.compat.v1.InteractiveSession
Объект TensorFlow для использования в интерактивных контекстах, таких как оболочка.
tf.compat.v1.InteractiveSession(
target='', graph=None, config=None
)
Используется в блокнотах
| Используется в учебниках |
|---|
Единственное отличие от обычной сессии состоит в том, что при создании она устанавливает себя в качестве стандартной сессии. Методы tf.Tensor.eval и tf.Operation.run будут использовать эту сессию для выполнения операций.
Это удобно в интерактивных оболочках и блокнотах IPython, так как позволяет избежать необходимости передавать явный объект сессии для выполнения операций.
Например:
sess = tf.compat.v1.InteractiveSession() a = tf.constant(5.0) b = tf.constant(6.0) c = a * b # We can just use 'c.eval()' without passing 'sess' print(c.eval()) sess.close()
Обратите внимание, что обычная сессия устанавливает себя в качестве стандартной сессии при создании в инструкции `with`. В неинтерактивных программах рекомендуется следовать этой модели:
a = tf.constant(5.0) b = tf.constant(6.0) c = a * b with tf.compat.v1.Session(): # We can also use 'c.eval()' here. print(c.eval())
| Аргументы | |
|---|---|
target | (Необязательно.) Движок выполнения, к которому следует подключиться. По умолчанию используется внутренний движок. |
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()
Закрывает InteractiveSession.
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, что полезно для определённых случаев использования (профилирование и отладка), но приведёт к заметному замедлению производительности вызываемого объекта. По умолчанию: 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. |
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, форма значения будет проверена на совместимость с этим плацехолдером. - Если ключ — это
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, которого нет. |
© 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/InteractiveSession