Spec-Zone.ru › TensorFlow 1.15

tf.contrib.tpu.InfeedQueue

Вспомогательный объект для построения очереди ввода на устройстве.

tf.contrib.tpu.InfeedQueue(
    number_of_tuple_elements=None, tuple_types=None, tuple_shapes=None,
    shard_dimensions=None, name=None
)

Объект InfeedQueue строит операции для очереди, выполняющие добавление и извлечение элементов на стороне хоста и устройства соответственно, и гарантирует соответствие их типов и форм.

Аргументы
number_of_tuple_elements количество тензоров, подаваемых атомарно в очередь; должно быть указано, если не может быть выведено из других аргументов.
tuple_types если не None, список типов элементов очереди.
tuple_shapes если не None, список форм элементов очереди.
shard_dimensions если не None, список измерений, по которым элементы очереди должны быть разделены при автоматическом распараллеливании.
name имя очереди.
Исключения
ValueError если number_of_tuple_elements ≤ 0; или number_of_tuple_arguments, tuple_types, tuple_shapes и shard_dimensions все None; или длина tuple_types, tuple_shapes или shard_dimensions не равна number_of_tuple_elements; или любой элемент shard_dimensions не может быть преобразован в Dimension.
TypeError если любой элемент tuple_types или tuple_shapes не может быть преобразован в dtype или TensorShape соответственно.
Атрибуты
number_of_shards Получает количество фрагментов для использования в InfeedQueue.
number_of_tuple_elements Возвращает количество элементов кортежа InfeedQueue.
shard_dimensions Получает размерность фрагмента каждого элемента кортежа.
sharding_policies Возвращает стратегии фрагментации элементов кортежа InfeedQueue.
tuple_shapes Возвращает формы элементов кортежа InfeedQueue.
tuple_types Возвращает типы элементов кортежа InfeedQueue.

Методы

freeze

Просмотреть исходный код

freeze()

Замораживает InfeedQueue, чтобы больше нельзя было его изменять.

Конфигурация неявно замораживается перед генерацией каких-либо операций на стороне хоста или устройства. Конфигурацию нельзя заморозить, пока не будут заданы типы и формы элементов кортежа.

Исключения
ValueError если типы или формы элементов кортежа не заданы.

generate_dequeue_op

Просмотреть исходный код

generate_dequeue_op(
    tpu_device=0
)

Генерирует операцию на стороне устройства для извлечения кортежа из очереди.

Неявно замораживает конфигурацию очереди, если она не заморожена, что вызовет ошибки, если формы и типы не полностью определены.

Аргументы
tpu_device порядковый номер устройства TPU, на котором должна быть размещена инструкция ввода. Если None, явное размещение не будет выполнено, и пользователю необходимо вызвать этот API в соответствующем пространстве устройства TPU. Код XLA потерпит неудачу, если инструкция извлечения TPU не привязана ни к какому устройству.
Возвращает
Список выходов, соответствующих фрагменту извлеченного из ввода XLA, подходящий для использования в реплицированном блоке.
Исключения
ValueError если типы или формы элементов кортежа не заданы; или если операция извлечения уже сгенерирована.

generate_enqueue_ops

Просмотреть исходный код

generate_enqueue_ops(
    sharded_inputs, tpu_ordinal_function=None, placement_function=None
)

Генерирует операции на стороне хоста для добавления фрагментов кортежа.

sharded_inputs — список, по одному для каждого фрагмента, списков тензоров. sharded_inputs[0] — кортеж тензоров, используемых для подачи фрагмента 0, если очередь. Возвращает операции на стороне хоста, которые необходимо выполнить для добавления фрагментированного кортежа. Операция для фрагмента i расположена совместно с входными данными для фрагмента i.

Неявно замораживает конфигурацию очереди, если она не заморожена. Если конфигурация уже заморожена и несовместима с типами и формами sharded_inputs, будет поднято исключение.

Аргументы
sharded_inputs список списков тензоров. Длина внешнего списка определяет количество фрагментов. Каждый внутренний список указывает типы и формы кортежей в соответствующем фрагменте.
tpu_ordinal_function если не None, функция, которая принимает индекс фрагмента в качестве входных данных и возвращает порядковый номер устройства TPU, на котором должен размещаться ввод фрагмента. tpu_ordinal_function должен быть установлен, если входные данные размещены на устройствах CPU.
placement_function если не None, функция, которая принимает индекс фрагмента в качестве входных данных и возвращает устройство хоста, на котором должна быть размещена операция добавления.
Возвращает
Список операций на стороне хоста, по одной для каждого фрагмента, которые при совместном выполнении добавлены в очередь полный элемент ввода.
Исключения
ValueError если конфигурация очереди была предварительно заморожена, и формы элементов sharded_inputs несовместимы с замороженной конфигурацией; или если формы элементов sharded_inputs не образуют согласованный нефрагментированный кортеж; или если элементы кортежа имеют разные ограничения устройств.
TypeError если конфигурация очереди была предварительно заморожена, и типы элементов sharded_inputs несовместимы с замороженной конфигурацией; или если типы элементов sharded_inputs не образуют согласованный нефрагментированный кортеж.

set_configuration_from_input_tensors

Просмотреть исходный код

set_configuration_from_input_tensors(
    input_tensors
)

Устанавливает формы и типы элементов кортежа очереди.

input_tensors — список тензоров, типы и формы которых используются для установки конфигурации очереди.

Аргументы
input_tensors список тензоров тех же типов и форм, что и желаемый кортеж очереди.
Исключения
ValueError если input_tensors не является списком длины self.number_of_tuple_elements

set_configuration_from_sharded_input_tensors

Просмотреть исходный код

set_configuration_from_sharded_input_tensors(
    input_tensors
)

Устанавливает формы и типы элементов кортежа очереди.

input_tensors — список списков тензоров, типы и формы которых используются для установки конфигурации очереди. Длина внешнего списка — необходимое количество фрагментов, а каждый внутренний список — кортеж тензоров для определения типов и форм соответствующего фрагмента. Этот метод зависит от размерности фрагмента и замораживает политику фрагментации.

Аргументы
input_tensors список списков тензоров. Длина внешнего списка соответствует требуемому количеству фрагментов, а каждый внутренний список — размер и форма желаемой конфигурации соответствующего фрагмента.
Исключения
ValueError если любой внутренний список не является списком длины self.number_of_tuple_elements; или внутренние списки не объединяются, чтобы образовать согласованную нефрагментированную форму.
TypeError если типы тензоров во внутренних списках не совпадают.

set_number_of_shards

Просмотреть исходный код

set_number_of_shards(
    number_of_shards
)

Устанавливает количество фрагментов для использования в InfeedQueue.

Аргументы
number_of_shards количество способов разделения InfeedQueue.
Исключения
ValueError если number_of_shards не > 0; или политики заморожены, и number_of_shards был уже установлен на другое значение.

set_shard_dimensions

Просмотреть исходный код

set_shard_dimensions(
    shard_dimensions
)

Устанавливает shard_dimension каждого элемента очереди.

shard_dimensions должен быть списком длины self.number_of_tuple_elements, и каждый элемент должен быть преобразуем в Dimension, совместимую с self.tuple_shapes.

Аргументы
shard_dimensions размеры каждого элемента очереди.
Исключения
ValueError если shard_dimensions не имеет длины self.number_of_tuple_elements; или элемент shard_dimensions не может быть преобразован в Dimension; или элемент shard_dimensions является Dimension, выходящий за пределы диапазона для соответствующей формы элемента кортежа.

set_tuple_shapes

Просмотр исходного кода

set_tuple_shapes(
    tuple_shapes
)

Устанавливает форму каждого элемента очереди.

tuple_shapes должен быть списком длины self.number_of_tuple_elements, и каждый элемент должен быть преобразуем в TensorShape.

Аргументы
tuple_shapes формы каждого элемента очереди.
Исключения
ValueError если tuple_shapes не имеет длины self.number_of_tuple_elements.
TypeError если элемент tuple_shapes не может быть преобразован в TensorShape.

set_tuple_types

Просмотр исходного кода

set_tuple_types(
    tuple_types
)

Устанавливает тип каждого элемента очереди.

tuple_types должен быть списком длины self.number_of_tuple_elements, и каждый элемент должен быть преобразуем в тип данных.

Аргументы
tuple_types типы каждого элемента очереди.
Исключения
ValueError если tuple_types не имеет длины self.number_of_tuple_elements.
TypeError если элемент tuple_types не может быть преобразован в тип данных.

split_inputs_and_generate_enqueue_ops

Просмотр исходного кода

split_inputs_and_generate_enqueue_ops(
    inputs, device_assignment=None, placement_function=None,
    tpu_ordinal_function=None
)

НЕЭФФЕКТИВНО ПРИ РАБОТЕ С МНОЖЕСТВОМ СИСТЕМ.

Генерирует операции для добавления кортежа в очередь.

Этот метод работает плохо, так как принимает весь вход на одном хосте, разделяет его и распределяет по всем ядрам. Он включен только для упрощения примеров в учебниках.

inputs — это список тензоров, используемых для подпитки очереди. Каждый вход разделяется на self.number_of_shards фрагментов. Возвращает операцию для добавления каждого фрагмента в очередь. Операция для фрагмента i размещается на устройстве placement_function(i).

Неявно замораживает конфигурацию очереди, если она еще не заморожена. Если конфигурация уже заморожена и несовместима с типами и формами входов, произойдёт ошибка.

Аргументы
inputs: список тензоров, который указывает типы и формы кортежа очереди.
device_assignment если не None, TPU DeviceAssignment. Если device_assignment не None, но placement_function и ordinal_function равны None, тогда device_assignment будет использоваться для размещения infeeds на первых k TPU фрагментах, где k — число фрагментов в очереди. Если все три значения None, тогда используются стандартные функции размещения и порядкового номера. placement_function: если не None, функция, которая принимает номер фрагмента в качестве входных данных и возвращает строку устройства, указывающую, на каком устройстве должен быть размещен входящий фрагмент. Если placement_function и tpu_ordinal_function равны None, входные данные фрагментируются в порядке очереди по устройствам в системе. tpu_ordinal_function: если не None, функция, которая принимает номер фрагмента в качестве входных данных и возвращает порядковый номер TPU-устройства, на котором должен быть размещен входящий фрагмент. Если placement_function и tpu_ordinal_function равны None, входные данные фрагментируются в порядке очереди по устройствам в системе.
Возвращает
Список операций на хосте, по одной для каждого фрагмента, которые при совместном выполнении добавят в очередь элемент полного размера.
Исключения
ValueError если конфигурация очереди ранее была заморожена, а формы элементов в inputs несовместимы с замороженной конфигурацией.
TypeError если конфигурация очереди ранее была заморожена, а типы элементов в inputs несовместимы с замороженной конфигурацией.

© 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/r1.15/api_docs/python/tf/contrib/tpu/InfeedQueue

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API