es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo entrenar un modelo Keras con función de pérdida de reconstrucción de norma L1.

Estoy construyendo actualmente un auto-codificador para el conjunto de datos MNIST con Keras, aquí está mi código:

importar todas las dependencias
from keras.layers import Dense,Conv2D,MaxPooling2D,UpSampling2D
from keras import Input, Model
from keras.datasets import mnist
import numpy as np
import matplotlib.pyplot as plt

encoding_dim = 15 
input_img = Input(shape=(784,))
# representación codificada de la entrada
encoded = Dense(encoding_dim, activation='relu')(input_img)
# representación decodificada del código
decoded = Dense(784, activation='sigmoid')(encoded)
# Modelo que toma una imagen de entrada y muestra imágenes decodificadas
autoencoder = Model(input_img, decoded)

# Este modelo muestra imágenes codificadas
encoder = Model(input_img, encoded)
# Creación de un modelo decodificador
encoded_input = Input(shape=(encoding_dim,))
# última capa del modelo del auto-codificador
decoder_layer = autoencoder.layers[-1]
# modelo decodificador
decoder = Model(encoded_input, decoder_layer(encoded_input))

autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

El último paso es el paso de compilación, pero necesito usar una función de pérdida de reconstrucción L1-norm. Según la descripción de Keras losses, parece que no tienen esta función. ¿Cómo puedo aplicar una función de pérdida de reconstrucción L1-norm a la función autoencoder.compile()? ¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para aplicar una función de pérdida de reconstrucción de norma L1 a la función autoencoder.compile(), puedes definir la función de pérdida de reconstrucción de norma L1 como una función de pérdida personalizada y pasarla a autoencoder.compile() de la siguiente manera:

    import tensorflow as tf
    
    def l1_reconstruction_loss(y_true, y_pred):
        """
        Función de pérdida de reconstrucción de norma L1.
        """
        return tf.reduce_mean(tf.abs(y_true - y_pred))
    
    autoencoder.compile(optimizer='adam', loss=l1_reconstruction_loss)
    

    En la función l1_reconstruction_loss, y_true y y_pred son las imágenes comprimidas verdaderas y predichas, respectivamente. La función tf.reduce_mean() calcula la media de la pérdida de reconstrucción de norma L1 sobre todos los píxeles de la imagen.

    Puedes llamar a esta función en la función autoencoder.compile() para establecer la función de pérdida personalizada l1_reconstruction_loss como la función de pérdida para tu modelo de autoencoder.

Comments are closed.