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 | Целое число. Количество потоков планирования для обработки пакетов задач. Определяет количество обрабатываемых в параллели пакетов. |
max_batch_size | Целое число. Размер пакета никогда не будет больше этого. |
batch_timeout_micros | Целое число. Максимальное количество микросекунд ожидания перед выводом неполного пакета. |
Tout | Список tf.DTypes длиной >= 1. Типы выходных тензоров. |
max_enqueued_batches | Необязательное целое число. По умолчанию 10. Максимальное количество очереди пакетов. По умолчанию: 10. |
allowed_batch_sizes | Необязательный список целых чисел. По умолчанию []. Необязательный список разрешенных размеров пакетов. Если оставлен пустым, ничего не делает. В противном случае предоставляет список размеров пакетов, заставляя операцию дополнять пакеты до одного из этих размеров. Элементы должны возрастать монотонно. Если enable_large_batch_splitting равен false (т. е. large-input-split не включен), последний элемент должен быть равен max_batch_size. |
container | Необязательная строка. По умолчанию "". Управляет областью совместного использования этого пакета. |
shared_name | Необязательная строка. По умолчанию "". Одновременные запущенные экземпляры batch на том же устройстве с одинаковым контейнером и shared_name будут объединять свои элементы вместе. Если оставлено пустым, имя операции будет использоваться в качестве shared_name. |
batching_queue | Необязательный bool. По умолчанию "". |
low_priority_max_batch_size | Необязательный bool. По умолчанию 0. |
low_priority_batch_timeout_micros | Необязательный bool. По умолчанию 0. |
low_priority_allowed_batch_sizes | Необязательный список bool. По умолчанию []. |
low_priority_max_enqueued_batches | Необязательный bool. По умолчанию 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