Spec-Zone.ru › TensorFlow 2.3

tf.keras.regularizers.Regularizer

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

Базовый класс регуляризатора.

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

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

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

tf.compat.v1.keras.regularizers.Regularizer

Регуляризаторы позволяют применять штрафы к параметрам слоев или активности слоев во время оптимизации. Эти штрафы суммируются в функцию потерь, которую оптимизирует сеть.

Штрафы за регуляризацию применяются на основе каждого слоя. Точный API будет зависеть от слоя, но многие слои (например, Dense, Conv1D, Conv2D и Conv3D) имеют унифицированный API.

Эти слои предоставляют 3 ключевых аргумента:

  • kernel_regularizer: Регуляризатор для применения штрафа к ядру слоя
  • bias_regularizer: Регуляризатор для применения штрафа к смещению слоя
  • activity_regularizer: Регуляризатор для применения штрафа к выходу слоя

Все слои (включая пользовательские слои) предоставляют activity_regularizer как свойство, которое можно установить, независимо от того, включено ли оно в аргументы конструктора.

Значение, возвращаемое activity_regularizer, делится на размер входной пакетной выборки, чтобы относительное взвешивание между регуляризаторами весов и регуляризаторами активности не изменялось при изменении размера пакетной выборки.

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

Пример

layer = tf.keras.layers.Dense(
    5, input_dim=5,
    kernel_initializer='ones',
    kernel_regularizer=tf.keras.regularizers.L1(0.01),
    activity_regularizer=tf.keras.regularizers.L2(0.01))
tensor = tf.ones(shape=(5, 5)) * 2.0
out = layer(tensor)
# The kernel regularization term is 0.25
# The activity regularization term (after dividing by the batch size) is 5
tf.math.reduce_sum(layer.losses)
<tf.Tensor: shape=(), dtype=float32, numpy=5.25>

Доступные штрафы

tf.keras.regularizers.L1(0.3)  # L1 Regularization Penalty
tf.keras.regularizers.L2(0.1)  # L2 Regularization Penalty
tf.keras.regularizers.L1L2(l1=0.01, l2=0.01)  # L1 + L2 penalties

Прямое обращение к регуляризатору

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

Например:

regularizer = tf.keras.regularizers.L2(2.) tensor = tf.ones(shape=(5, 5)) regularizer(tensor)

Разработка новых регуляризаторов

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

@tf.keras.utils.register_keras_serializable(package='Custom', name='l1')
def l1_reg(weight_matrix):
   return 0.01 * tf.math.reduce_sum(tf.math.abs(weight_matrix))

layer = tf.keras.layers.Dense(5, input_dim=5,
    kernel_initializer='ones', kernel_regularizer=l1_reg)
tensor = tf.ones(shape=(5, 5))
out = layer(tensor)
layer.losses
[<tf.Tensor: shape=(), dtype=float32, numpy=0.25>]

В качестве альтернативы, вы можете написать свои пользовательские регуляризаторы объектно-ориентированным способом, расширив этот базовый класс регуляризатора, например:

@tf.keras.utils.register_keras_serializable(package='Custom', name='l2')
class L2Regularizer(tf.keras.regularizers.Regularizer):
  def __init__(self, l2=0.):
    self.l2 = l2

  def __call__(self, x):
    return self.l2 * tf.math.reduce_sum(tf.math.square(x))

  def get_config(self):
    return {'l2': float(self.l2)}

layer = tf.keras.layers.Dense(
  5, input_dim=5, kernel_initializer='ones',
  kernel_regularizer=L2Regularizer(l2=0.5))
tensor = tf.ones(shape=(5, 5))
out = layer(tensor)
layer.losses
[<tf.Tensor: shape=(), dtype=float32, numpy=12.5>]

Примечание о сериализации и десериализации:

Регистрация регуляризаторов как сериализуемых необязательна, если вы только обучаете и выполняете модели, экспортируете их в SavedModels и обратно, или сохраняете и загружаете контрольные точки весов.

Регистрация требуется для Keras model_to_estimator, сохранения и загрузки моделей в формате HDF5, клонирования моделей Keras, некоторых инструментов визуализации и экспорта моделей в формат JSON и обратно. Если вы используете эту функциональность, вы должны убедиться, что любой процесс Python, выполняющий вашу модель, также определил и зарегистрировал ваш пользовательский регуляризатор.

tf.keras.utils.register_keras_serializable доступен только в TF 2.1 и более поздних версиях. В более ранних версиях TensorFlow необходимо передать свой пользовательский регуляризатор в аргумент custom_objects методов, которые ожидают, что пользовательские регуляризаторы будут зарегистрированы как сериализуемые.

Методы

from_config

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

@classmethod
from_config(
    config
)

Создаёт регуляризатор из его конфигурации.

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

Этот метод используется Keras model_to_estimator, сохранения и загрузки моделей в формате HDF5, клонирования моделей Keras, некоторыми инструментами визуализации и экспорта моделей в формат JSON и обратно.

Аргументы
config Словарь Python, обычно вывод метода get_config.
Возвращаемое значение
Экземпляр регуляризатора.

get_config

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

get_config()

Возвращает конфигурацию регуляризатора.

Конфигурация регуляризатора — это словарь Python (сериализуемый), содержащий все параметры конфигурации регуляризатора. Тот же регуляризатор можно будет восстановить позже (без сохранённого состояния) из этой конфигурации.

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

Этот метод необходим для Keras model_to_estimator, сохранения и загрузки моделей в формате HDF5, клонирования моделей Keras, некоторых инструментов визуализации и экспорта моделей в формат JSON и обратно.

Возвращаемое значение
Словарь Python.

__call__

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

__call__(
    x
)

Вычисляет штраф за регуляризацию из входного тензора.

© 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/r2.3/api_docs/python/tf/keras/regularizers/Regularizer

Spec-Zone.ru

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