Spec-Zone.ru › TensorFlow 2.9

tf.data.experimental.get_single_element

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

Возвращает единственный элемент 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})

Estimator

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

def serving_input_fn():

  raw_feature_spec = ... # Spec for the raw_features
  input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
      raw_feature_spec, default_batch_size=None)
  )
  serving_input_receiver = input_fn()
  raw_features = serving_input_receiver.features

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

  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)

  # Please note that the value of `BATCH_SIZE` should be equal to
  # the size of the leading dimension of `raw_features`. This ensures
  # that `dataset` has only element, which is a pre-requisite for
  # using `tf.data.experimental.get_single_element(dataset)`.

  return tf.estimator.export.ServingInputReceiver(
      processed_features, serving_input_receiver.receiver_tensors)

estimator = ... # A pre-built or custom estimator
estimator.export_saved_model(your_exported_model_dir, serving_input_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/versions/r2.9/api_docs/python/tf/data/experimental/get_single_element

Spec-Zone.ru

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