Spec-Zone.ru › TensorFlow 2.9

tf.keras.layers.experimental.preprocessing.PreprocessingLayer

Базовый класс для слоев предобработки.

Наследуется от: Layer, Module

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

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.keras.layers.experimental.preprocessing.PreprocessingLayer

tf.keras.layers.experimental.preprocessing.PreprocessingLayer(
    **kwargs
)

Не используйте этот класс напрямую: это абстрактный базовый класс! Возможно, вам нужны один из многих встроенных слоев предобработки.

Слои предобработки — это слои, состояние которых вычисляется до начала обучения модели. Они не обновляются во время обучения. Большинство слоев предобработки реализуют метод adapt() для вычисления состояния.

Класс PreprocessingLayer — это базовый класс, который необходимо наследовать для реализации собственных слоев предобработки.

Атрибуты
is_adapted Является ли слой уже подобранным к данным.

Методы

adapt

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

adapt(
    data, batch_size=None, steps=None
)

Подбирает состояние слоя предобработки к передаваемым данным.

После вызова adapt для слоя состояние слоя предобработки не будет обновляться во время обучения. Чтобы сделать слои предобработки эффективными в любом контексте распределения, они сохраняются неизменными относительно любых скомпилированных tf.Graph, которые вызывают слой. Это не влияет на использование слоя при адаптации каждого слоя только один раз, но если вы адаптируете слой несколько раз, вам необходимо позаботиться о повторной компиляции любых скомпилированных функций следующим образом:

  • Если вы добавляете слой предобработки в keras.Model, вам необходимо вызвать model.compile после каждого последующего вызова adapt.
  • Если вы вызываете слой предобработки внутри tf.data.Dataset.map, вы должны вызвать map снова на входном tf.data.Dataset после каждого adapt.
  • Если вы используете tf.function напрямую, который вызывает слой предобработки, вам необходимо вызвать tf.function снова на вашем вызываемом объекте после каждого последующего вызова adapt.

tf.keras.Model пример с несколькими адаптациями:

layer = tf.keras.layers.Normalization(
    axis=None)
layer.adapt([0, 2])
model = tf.keras.Sequential(layer)
model.predict([0, 1, 2])
array([-1.,  0.,  1.], dtype=float32)
layer.adapt([-1, 1])
model.compile() # This is needed to re-compile model.predict!
model.predict([0, 1, 2])
array([0., 1., 2.], dtype=float32)

tf.data.Dataset пример с несколькими адаптациями:

layer = tf.keras.layers.Normalization(
    axis=None)
layer.adapt([0, 2])
input_ds = tf.data.Dataset.range(3)
normalized_ds = input_ds.map(layer)
list(normalized_ds.as_numpy_iterator())
[array([-1.], dtype=float32),
 array([0.], dtype=float32),
 array([1.], dtype=float32)]
layer.adapt([-1, 1])
normalized_ds = input_ds.map(layer) # Re-map over the input dataset.
list(normalized_ds.as_numpy_iterator())
[array([0.], dtype=float32),
 array([1.], dtype=float32),
 array([2.], dtype=float32)]

adapt() предназначен только для использования на одной машине для вычисления состояния слоя. Чтобы проанализировать набор данных, который не помещается на одной машине, см. Tensorflow Transform для многомашинного решения map-reduce.

Аргументы
data Данные для обучения. Его можно передать как tf.data Dataset или как массив NumPy.
batch_size Целое число или None. Количество образцов на обновление состояния. Если не указано, batch_size по умолчанию равно 32. Не указывайте batch_size если ваши данные представлены в виде наборов данных, генераторов или экземпляров keras.utils.Sequence (поскольку они генерируют пакеты).
steps Целое число или None. Общее количество шагов (пакетов образцов). При обучении с помощью тензоров данных, таких как тензоры данных TensorFlow, значение None по умолчанию равно количеству образцов в вашем наборе данных, деленному на размер пакета, или 1, если это невозможно определить. Если x является набором данных tf.data, а 'steps' равно None, эпоха будет выполняться до тех пор, пока входной набор данных не будет исчерпан. При передаче бесконечно повторяющегося набора данных вы должны указать аргумент steps . Этот аргумент не поддерживается с входными массивами.

compile

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

compile(
    run_eagerly=None, steps_per_execution=None
)

Настраивает слой для adapt.

Аргументы
run_eagerly Булево значение. По умолчанию False. Если True, логика этого Model не будет обернута в tf.function. Рекомендуется оставить это значение как None, если ваша Model не может быть выполнена внутри tf.function. steps_per_execution: Целое число. По умолчанию 1. Количество пакетов, выполняемых во время каждого вызова tf.function. Выполнение нескольких пакетов внутри одного вызова tf.function может значительно повысить производительность на TPU или небольших моделях с большой накладными расходами Python.

© 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/keras/layers/experimental/preprocessing/PreprocessingLayer

Spec-Zone.ru

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