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='',
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 |
Число потоков планирования для обработки пакетов работ. Определяет количество пакетов, обрабатываемых параллельно. |
max_batch_size |
Максимальный размер пакета. Размеры пакетов никогда не будут больше этого значения. |
batch_timeout_micros |
Максимальное количество микросекунд ожидания перед выводом неполного пакета. |
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 на одном устройстве с тем же контейнером и shared_name будут объединять свои элементы вместе. Если оставлен пустым, имя операции будет использоваться в качестве shared_name. |
batching_queue |
Необязательный string. По умолчанию "". |
enable_large_batch_splitting |
Необязательный bool. По умолчанию False. Вход с большим размером (т. е., больше, чем максимальное значение allowed_batch_sizes) будет разделен на несколько пакетов с размером пакета. |
name |
Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Список Tensor объектов типа Tout. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/raw_ops/BatchFunction