Spec-Zone.ru › TensorFlow

tf.keras.Regularizer

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

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

Основные псевдонимы

tf.keras.regularizers.Regularizer

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

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

tf.compat.v1.keras.Regularizer

Используется в блокнотах

Используется в руководствах
  • Масштабируемое сжатие моделей

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

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

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

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

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

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

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

Пример

layer = Dense(
    5, input_dim=5,
    kernel_initializer='ones',
    kernel_regularizer=L1(0.01),
    activity_regularizer=L2(0.01))
tensor = ops.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
ops.sum(layer.losses)
5.25

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

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

Прямой вызов регуляризатора

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

Например:

regularizer = L2(2.)
tensor = ops.ones(shape=(5, 5))
regularizer(tensor)
50.0

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

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

def l1_reg(weight_matrix):
   return 0.01 * ops.sum(ops.absolute(weight_matrix))

layer = Dense(5, input_dim=5,
    kernel_initializer='ones', kernel_regularizer=l1_reg)
tensor = ops.ones(shape=(5, 5))
out = layer(tensor)
layer.losses
0.25

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

class L2Regularizer(Regularizer):
  def __init__(self, l2=0.):
    self.l2 = l2

  def __call__(self, x):
    return self.l2 * ops.sum(ops.square(x))

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

layer = Dense(
  5, input_dim=5, kernel_initializer='ones',
  kernel_regularizer=L2Regularizer(l2=0.5))
tensor = ops.ones(shape=(5, 5))
out = layer(tensor)
layer.losses
12.5

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

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

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

Методы

from_config

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

@classmethod
from_config(
    config
)

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

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

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

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

get_config

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

get_config()

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

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

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

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

Возвращает
Словарь Python.

__call__

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

__call__(
    x
)

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

© 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/keras/Regularizer

Spec-Zone.ru

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