Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.data.Iterator

Представляет состояние итерации по Dataset.

tf.compat.v1.data.Iterator(
    iterator_resource, initializer, output_types, output_shapes, output_classes
)
Аргументы
iterator_resource Скалярный tf.resource tf.Tensor, представляющий итератор.
initializer tf.Operation, который нужно выполнить для инициализации этого итератора.
output_types (Вложенная) структура объектов tf.DType, соответствующих каждому компоненту элемента этого итератора.
output_shapes (Вложенная) структура объектов tf.TensorShape, соответствующих каждому компоненту элемента этого итератора.
output_classes (Вложенная) структура объектов Python type , соответствующих каждому компоненту элемента этого итератора.
Исключения
TypeError Если output_types, output_shapes, или output_classes не указаны.
Атрибуты
element_spec Спецификация типа элемента этого итератора.

Для получения дополнительной информации, ознакомьтесь с данным руководством.

initializer tf.Operation, который нужно выполнить для инициализации этого итератора.
output_classes Возвращает класс каждого компонента элемента этого итератора. (устарело)
Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: используйте tf.compat.v1.data.get_output_classes(iterator).

Ожидаемые значения - tf.Tensor и tf.sparse.SparseTensor.

output_shapes Возвращает форму каждого компонента элемента этого итератора. (устарело)
Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: используйте tf.compat.v1.data.get_output_shapes(iterator).
output_types Возвращает тип каждого компонента элемента этого итератора. (устарело)
Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: используйте tf.compat.v1.data.get_output_types(iterator).

Методы

from_string_handle

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

@staticmethod
from_string_handle(
    string_handle, output_types, output_shapes=None, output_classes=None
)

Создает новый, неинициализированный Iterator на основе данного дескриптора.

Этот метод позволяет определить "подключаемый" итератор, где можно выбирать между конкретными итераторами, подавая значение в вызов tf.Session.run. В этом случае, string_handle будет tf.compat.v1.placeholder, и вы будете подавать его значение tf.data.Iterator.string_handle на каждой итерации.

Например, если у вас есть два итератора, которые отмечают текущую позицию в наборе данных обучения и наборе данных тестирования, вы можете выбрать, какой использовать на каждой итерации следующим образом:

train_iterator = tf.data.Dataset(...).make_one_shot_iterator()
train_iterator_handle = sess.run(train_iterator.string_handle())

test_iterator = tf.data.Dataset(...).make_one_shot_iterator()
test_iterator_handle = sess.run(test_iterator.string_handle())

handle = tf.compat.v1.placeholder(tf.string, shape=[])
iterator = tf.data.Iterator.from_string_handle(
    handle, train_iterator.output_types)

next_element = iterator.get_next()
loss = f(next_element)

train_loss = sess.run(loss, feed_dict={handle: train_iterator_handle})
test_loss = sess.run(loss, feed_dict={handle: test_iterator_handle})
Аргументы
string_handle Скалярный tf.Tensor типа tf.string, который вычисляет дескриптор, полученный методом Iterator.string_handle() .
output_types (Вложенная) структура объектов tf.DType, соответствующих каждому компоненту элемента этого набора данных.
output_shapes (Необязательно.) (Вложенная) структура объектов tf.TensorShape, соответствующих каждому компоненту элемента этого набора данных. Если опущено, для каждого компонента будет не ограниченная форма.
output_classes (Необязательно.) (Вложенная) структура объектов Python type , соответствующих каждому компоненту элемента этого итератора. Если опущено, каждый компонент предполагается типа tf.Tensor.
Возвращаемое значение
Iterator.

from_structure

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

@staticmethod
from_structure(
    output_types, output_shapes=None, shared_name=None, output_classes=None
)

Создает новый, неинициализированный Iterator с заданной структурой.

Этот метод создания итератора можно использовать для создания итератора, который можно повторно использовать с множеством различных наборов данных.

Возвращаемый итератор не привязан к конкретному набору данных, и он не имеет initializer. Для инициализации итератора выполните операцию, возвращаемую Iterator.make_initializer(dataset).

Следующий пример

iterator = Iterator.from_structure(tf.int64, tf.TensorShape([]))

dataset_range = Dataset.range(10)
range_initializer = iterator.make_initializer(dataset_range)

dataset_evens = dataset_range.filter(lambda x: x % 2 == 0)
evens_initializer = iterator.make_initializer(dataset_evens)

# Define a model based on the iterator; in this example, the model_fn
# is expected to take scalar tf.int64 Tensors as input (see
# the definition of 'iterator' above).
prediction, loss = model_fn(iterator.get_next())

# Train for `num_epochs`, where for each epoch, we first iterate over
# dataset_range, and then iterate over dataset_evens.
for _ in range(num_epochs):
  # Initialize the iterator to `dataset_range`
  sess.run(range_initializer)
  while True:
    try:
      pred, loss_val = sess.run([prediction, loss])
    except tf.errors.OutOfRangeError:
      break

  # Initialize the iterator to `dataset_evens`
  sess.run(evens_initializer)
  while True:
    try:
      pred, loss_val = sess.run([prediction, loss])
    except tf.errors.OutOfRangeError:
      break
Аргументы
output_types (Вложенная) структура объектов tf.DType, соответствующих каждому компоненту элемента этого набора данных.
output_shapes (Необязательно.) (Вложенная) структура объектов tf.TensorShape, соответствующих каждому компоненту элемента этого набора данных. Если опущено, для каждого компонента будет не ограниченная форма.
shared_name (Необязательно.) Если не пусто, этот итератор будет совместно использоваться под данным именем в нескольких сессиях, которые используют одни и те же устройства (например, при использовании удаленного сервера).
output_classes (Необязательно.) (Вложенная) структура объектов Python type , соответствующих каждому компоненту элемента этого итератора. Если опущено, каждый компонент предполагается типа tf.Tensor.
Возвращаемое значение
Iterator.
Исключения
TypeError Если структуры output_shapes и output_types не совпадают.

get_next

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

get_next(
    name=None
)

Возвращает следующий элемент.

В режиме графа, как правило, вы должны вызывать этот метод один раз и использовать его результат в качестве входного параметра для другого вычисления. Затем типичный цикл вызовет tf.Session.run по результату этого вычисления. Цикл завершится, когда операция Iterator.get_next() вызовет tf.errors.OutOfRangeError. Следующий шаблон показывает, как использовать этот метод при построении цикла обучения:

dataset = ...  # A `tf.data.Dataset` object.
iterator = dataset.make_initializable_iterator()
next_element = iterator.get_next()

# Build a TensorFlow graph that does something with each element.
loss = model_function(next_element)
optimizer = ...  # A `tf.compat.v1.train.Optimizer` object.
train_op = optimizer.minimize(loss)

with tf.compat.v1.Session() as sess:
  try:
    while True:
      sess.run(train_op)
  except tf.errors.OutOfRangeError:
    pass
Примечание: Допустимо вызывать Iterator.get_next() несколько раз, например, когда вы распределяете разные элементы на несколько устройств в одном шаге. Однако, часто возникает проблема, когда пользователи вызывают Iterator.get_next() в каждом цикле обучения. Iterator.get_next() добавляет операции в граф, и выполнение каждой операции выделяет ресурсы (включая потоки); в результате вызов его в каждом цикле обучения приводит к замедлению и исчерпанию ресурсов. Чтобы защититься от этого результата, мы регистрируем предупреждение, когда количество использований превышает заданный порог подозрительности.
Аргументы
name (Необязательно.) Имя создаваемой операции.
Возвращаемое значение
(Вложенная) структура значений, соответствующих tf.data.Iterator.element_spec.

get_next_as_optional

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

get_next_as_optional()

make_initializer

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

make_initializer(
    dataset, name=None
)

Возвращает tf.Operation, который инициализирует этот итератор на dataset.

Аргументы
dataset Dataset, чей element_spec совместим с этим итератором.
name (Необязательно.) Имя создаваемой операции.
Возвращает
Объект tf.Operation, который можно выполнить для инициализации этого итератора на заданном dataset.
Возможные исключения
TypeError Если dataset и этот итератор не имеют совместимого element_spec.

string_handle

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

string_handle(
    name=None
)

Возвращает строковое значение tf.Tensor, представляющее этот итератор.

Аргументы
name (Необязательно.) Имя создаваемой операции.
Возвращает
Скалярный tf.Tensor типа tf.string.

© 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/compat/v1/data/Iterator

Spec-Zone.ru

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