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 | 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 (т. е. large-input-split не включен), последний элемент должен быть равен max_batch_size. |
container | Необязательный string. По умолчанию "". Управляет областью совместного использования этого пакета. |
shared_name | Необязательный string. По умолчанию "". Одновременные экземпляры функции batch на одном устройстве с одинаковым контейнером и shared_name будут группировать свои элементы вместе. Если оставлен пустым, имя операции будет использоваться в качестве имени shared. |
batching_queue | Необязательный string. По умолчанию "". |
enable_large_batch_splitting | Необязательный bool. По умолчанию False. Вход с большим размером (т. е. большим, чем наибольшее значение allowed_batch_sizes) будет разделен на несколько пакетов размером batch. |
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/versions/r2.9/api_docs/python/tf/raw_ops/BatchFunction