Ver fuente en GitHub

Clase base regularizador.

Ver alias

Compat alias para la migración

Ver Guía de migración para más detalles.

tf.compat.v1.keras.regularizers.Regularizer

Los regularizadores le permiten aplicar penalizaciones a los parámetros de la capa o la actividad de la capa durante la optimización. Estas penalizaciones se suman a la función de pérdida que optimiza la red.

Las penalizaciones por regularización se aplican por capa. La API exacta dependerá de la capa, pero muchas capas (p. Ej. Dense, Conv1D, Conv2D y Conv3D) tienen una API unificada.

Estas capas exponen 3 argumentos de palabras clave:

  • kernel_regularizer: Regularizador para aplicar una penalización en el kernel de la capa
  • bias_regularizer: Regularizador para aplicar una penalización en el sesgo de la capa.
  • activity_regularizer: Regularizador para aplicar una penalización en la salida de la capa.

Todas las capas (incluidas las capas personalizadas) exponen activity_regularizer como una propiedad configurable, esté o no en los argumentos del constructor.

El valor devuelto por el activity_regularizer se divide por el tamaño del lote de entrada para que la ponderación relativa entre los regularizadores de peso y los regularizadores de actividad no cambie con el tamaño del lote.

Puede acceder a las penalizaciones de regularización de una capa llamando layer.losses después de llamar a la capa en las entradas.

Ejemplo

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>

Sanciones disponibles

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

Llamar directamente a un regularizador

Calcule una pérdida de regularización en un tensor llamando directamente a un regularizador como si fuera una función de un solo argumento.

P.ej

>>> regularizer = tf.keras.regularizers.L2(2.)>>> tensor = tf.ones(shape=(5,5))>>>regularizer(tensor)<tf.Tensor: shape=(), dtype=float32, numpy=50.0>

Desarrollando nuevos regularizadores

Cualquier función que tome una matriz de peso y devuelva un tensor escalar se puede usar como regularizador, por ejemplo:

@tf.keras.utils.register_keras_serializable(package='Custom', name='l1')defl1_reg(weight_matrix):return0.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>]

Alternativamente, puede escribir sus regularizadores personalizados de una manera orientada a objetos extendiendo esta clase base de regularizador, por ejemplo:

@tf.keras.utils.register_keras_serializable(package='Custom', name='l2')classL2Regularizer(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))defget_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>]

Una nota sobre serialización y deserialización:

El registro de los regularizadores como serializables es opcional si solo está entrenando y ejecutando modelos, exportando hacia y desde modelos guardados o guardando y cargando puntos de control de peso.

Es necesario registrarse para Keras model_to_estimator, guardar y cargar modelos en formatos HDF5, clonación de modelos de Keras, algunas utilidades de visualización y exportación de modelos hacia y desde JSON. Si usa esta funcionalidad, debe asegurarse de que cualquier proceso de Python que ejecute su modelo también haya definido y registrado su regularizador personalizado.

tf.keras.utils.register_keras_serializable solo está disponible en TF 2.1 y posteriores. En versiones anteriores de TensorFlow, debe pasar su regularizador personalizado al custom_objects argumento de métodos que esperan que los regularizadores personalizados se registren como serializables.

Métodos

from_config

Ver fuente

@classmethod
from_config(
    config
)

Crea un regularizador a partir de su configuración.

Este método es el reverso de get_config, capaz de instanciar el mismo regularizador desde el diccionario de configuración.

Este método es utilizado por Keras model_to_estimator, guardar y cargar modelos en formatos HDF5, clonación de modelos de Keras, algunas utilidades de visualización y exportación de modelos hacia y desde JSON.

Argumentos
config Un diccionario de Python, normalmente el resultado de get_config.
Devoluciones
Una instancia de regularizador.

get_config

Ver fuente

get_config()

Devuelve la configuración del regularizador.

Una configuración de regularizador es un diccionario de Python (serializable) que contiene todos los parámetros de configuración del regularizador. El mismo regularizador se puede reinstalar más tarde (sin ningún estado guardado) desde esta configuración.

Este método es opcional si solo está entrenando y ejecutando modelos, exportando hacia y desde SavedModels o utilizando puntos de control de peso.

Este método es necesario para Keras model_to_estimator, guardar y cargar modelos en formatos HDF5, clonación de modelos de Keras, algunas utilidades de visualización y exportación de modelos hacia y desde JSON.

Devoluciones
Diccionario de Python.

__call__

Ver fuente

__call__(
    x
)

Calcule una penalización de regularización a partir de un tensor de entrada.