Spec-Zone.ru › TensorFlow

tf.data.experimental.get_single_element

Возвращает единственный элемент dataset в виде вложенной структуры тензоров. (устарела)

Просмотреть псевдонимы

Совместимые псевдонимы для миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.data.experimental.get_single_element

tf.data.experimental.get_single_element(
    dataset
)
Устарела: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в одной из будущих версий. Инструкции по обновлению: используйте tf.data.Dataset.get_single_element().

Функция позволяет использовать tf.data.Dataset в выражении без состояния «тензор на входе — тензор на выходе», не создавая итератор. Это упрощает преобразование данных в тензорах с помощью оптимизированной абстракции tf.data.Dataset, построенной поверх них.

Например, рассмотрим preprocessing_fn, который принимает необработанные признаки и возвращает обработанный признак вместе с его меткой.

def preprocessing_fn(raw_feature):
  # ... the raw_feature is preprocessed as per the use-case
  return feature

raw_features = ...  # input batch of BATCH_SIZE elements.
dataset = (tf.data.Dataset.from_tensor_slices(raw_features)
           .map(preprocessing_fn, num_parallel_calls=BATCH_SIZE)
           .batch(BATCH_SIZE))

processed_features = tf.data.experimental.get_single_element(dataset)

В приведенном выше примере тензор raw_features длины BATCH_SIZE был преобразован в tf.data.Dataset. Затем каждый из raw_feature был сопоставлен с помощью preprocessing_fn, а обработанные признаки были объединены в один пакет. Итоговый dataset содержит только один элемент — пакет со всеми обработанными признаками.

Примечание: dataset должен содержать только один элемент.

Теперь вместо создания итератора для dataset и извлечения пакета признаков используется функция tf.data.experimental.get_single_element(), которая позволяет пропустить создание итератора и напрямую получить пакет признаков.

Это может быть особенно полезно, если преобразования тензоров представлены в виде операций tf.data.Dataset и вы хотите использовать эти преобразования при обслуживании своей модели.

Keras

model = ... # A pre-built or custom model

class PreprocessingModel(tf.keras.Model):
  def __init__(self, model):
    super().__init__(self)
    self.model = model

  @tf.function(input_signature=[...])
  def serving_fn(self, data):
    ds = tf.data.Dataset.from_tensor_slices(data)
    ds = ds.map(preprocessing_fn, num_parallel_calls=BATCH_SIZE)
    ds = ds.batch(batch_size=BATCH_SIZE)
    return tf.argmax(
      self.model(tf.data.experimental.get_single_element(ds)),
      axis=-1
    )

preprocessing_model = PreprocessingModel(model)
your_exported_model_dir = ... # save the model to this path.
tf.saved_model.save(preprocessing_model, your_exported_model_dir,
              signatures={'serving_default': preprocessing_model.serving_fn})
Аргументы
dataset Объект tf.data.Dataset, содержащий один элемент.
Возвращает
Вложенную структуру объектов tf.Tensor, соответствующую единственному элементу dataset.
Вызывает исключения
TypeError если dataset не является объектом tf.data.Dataset.
InvalidArgumentError (во время выполнения), если dataset содержит не ровно один элемент.

© 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/data/experimental/get_single_element

Spec-Zone.ru

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