tf.raw_ops.BatchFunction
Объединяет все входные тензоры в пакеты для вычисления, выполняемого функцией.
tf.raw_ops.BatchFunction(
in_tensors,
captured_tensors,
f,
num_batch_threads,
max_batch_size,
batch_timeout_micros,
Tout,
max_enqueued_batches=10,
allowed_batch_sizes=[],
container='',
shared_name='',
batching_queue='',
low_priority_max_batch_size=0,
low_priority_batch_timeout_micros=0,
low_priority_allowed_batch_sizes=[],
low_priority_max_enqueued_batches=0,
enable_large_batch_splitting=False,
name=None
)
Например, в следующем коде
# This input will be captured.
y = tf.placeholder_with_default(1.0, shape=[])
@tf.Defun(tf.float32)
def computation(a):
return tf.matmul(a, a) + y
b = gen_batch_ops.batch_function(
f=computation
in_tensors=[a],
captured_tensors=computation.captured_inputs,
Tout=[o.type for o in computation.definition.signature.output_arg],
num_batch_threads=1,
max_batch_size=10,
batch_timeout_micros=100000, # 100ms
allowed_batch_sizes=[3, 10],
batching_queue="")
Если несколько вызовов session.run одновременно пытаются вычислить b, значения a будут собраны и недетерминированно объединены вдоль первой оси, и вычисление будет выполнено только одним потоком.
Предполагается, что все аргументы функции являются тензорами, которые будут объединены в пакеты вдоль первого измерения.
Захваченные аргументы не объединяются в пакеты. Вызов session.run, выполняющий объединение, использует доступные ему значения захваченных тензоров. Поэтому обычно захваченные тензоры должны содержать значения, которые не меняются между вызовами session.run. Хорошим примером является инференс.
SparseTensor не поддерживается. Декорированная функция должна возвращать тензор или список/кортеж тензоров.
| Аргументы | |
|---|---|
in_tensors | Список объектов Tensor. Тензоры, которые необходимо объединить в пакеты. |
captured_tensors | Список объектов Tensor. Тензоры, захваченные функцией и не требующие объединения в пакеты. |
f | Функция, декорированная с помощью @Defun. |
num_batch_threads | int. Количество потоков планировщика для обработки пакетов задач. Определяет число пакетов, обрабатываемых параллельно. |
max_batch_size | int. Размеры пакетов не будут превышать это значение. |
batch_timeout_micros | int. Максимальное время ожидания в микросекундах перед отправкой неполного пакета. |
Tout | Список tf.DTypes длиной >= 1. Типы выходных тензоров. |
max_enqueued_batches | Необязательный int. По умолчанию — 10. Максимальное количество поставленных в очередь пакетов. По умолчанию: 10. |
allowed_batch_sizes | Необязательный список ints. По умолчанию — []. Необязательный список допустимых размеров пакетов. Если список пуст, ничего не происходит. В противном случае список задаёт размеры пакетов, до которых операция дополняет пакеты. Значения должны монотонно возрастать. Если enable_large_batch_splitting имеет значение false (то есть разделение больших входных данных отключено), последнее значение должно быть равно max_batch_size. |
container | Необязательный string. По умолчанию — "". Определяет область совместного использования этого пакета. |
shared_name | Необязательный string. По умолчанию — "". Одновременно выполняющиеся экземпляры batch на одном устройстве с одинаковыми container и shared_name объединят свои элементы в общий пакет. Если значение не задано, в качестве общего имени используется имя операции. |
batching_queue | Необязательный string. По умолчанию — "". |
low_priority_max_batch_size | Необязательный int. По умолчанию — 0. |
low_priority_batch_timeout_micros | Необязательный int. По умолчанию — 0. |
low_priority_allowed_batch_sizes | Необязательный список ints. По умолчанию — []. |
low_priority_max_enqueued_batches | Необязательный int. По умолчанию — 0. |
enable_large_batch_splitting | Необязательный bool. По умолчанию — False. Входные данные большого размера (то есть превышающие наибольшее значение allowed_batch_sizes) будут разделены на несколько пакетов указанного размера. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Список объектов Tensor типа Tout. |
© 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/raw_ops/BatchFunction