tf.nondifferentiable_batch_function
Объединяет в пакеты вычисления, выполняемые декорированной функцией.
tf.nondifferentiable_batch_function(
num_batch_threads,
max_batch_size,
batch_timeout_micros,
allowed_batch_sizes=None,
max_enqueued_batches=10,
autograph=True,
enable_large_batch_splitting=True
)
Например, в следующем коде
@batch_function(1, 2, 3) def layer(a): return tf.matmul(a, a) b = layer(w)
если несколько вызовов session.run одновременно пытаются вычислить b, значения w будут собраны и в недетерминированном порядке объединены по первой оси, а вычисление выполнит только один поток. Подробнее см. в документации по операции Batch.
Предполагается, что все аргументы декорированной функции являются тензорами, которые будут объединены в пакет по первому измерению.
SparseTensor не поддерживается. Возвращаемое значение декорированной функции должно быть тензором или списком/кортежем тензоров.
| Аргументы | |
|---|---|
num_batch_threads | Количество потоков планировщика для обработки пакетов задач. Определяет количество пакетов, обрабатываемых параллельно. |
max_batch_size | Размер пакетов не будет превышать это значение. |
batch_timeout_micros | Максимальное время ожидания в микросекундах перед выводом неполного пакета. |
allowed_batch_sizes | Необязательный список допустимых размеров пакетов. Если список пуст, ничего не происходит. В противном случае он задаёт размеры пакетов, до которых операция дополняет пакеты. Значения должны монотонно возрастать, а последнее значение должно совпадать с max_batch_size. |
max_enqueued_batches | Максимальная глубина очереди пакетов. По умолчанию — 10. |
autograph | Использовать ли AutoGraph для компиляции кода на Python и кода в eager-стиле с целью эффективного выполнения в режиме графа. |
enable_large_batch_splitting | Значение этого параметра не влияет на результат обработки при одинаковых входных данных; оно влияет на детали реализации, указанные ниже: 1. Повышает эффективность пакетной обработки за счёт исключения ненужного дополнения. 2. max_batch_size задаёт ограничение на размер входных данных, а allowed_batch_sizes — ограничение на размер обрабатываемой задачи. Пользователь API может передать входные данные размером 128 при значении 'max_execution_batch_size' 32 -> реализация может разделить входные данные размером 128 на 4 части по 32 элемента, запланировать их параллельную обработку, а затем вернуть объединённые результаты для всех 128 элементов. |
| Возвращаемое значение | |
|---|---|
| Декорированная функция вернёт тензоры с результатами вычислений, не объединёнными в пакет. |
© 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/nondifferentiable_batch_function