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.

Función aproximada únicamente con puntos anteriores.

Me gustaría aproximar una función polinomial (por ahora de grado 3), con una entrada de 10 pasos para predecir los próximos 20 puntos. Para hacer esto, utilizo un modelo denso simple con una neurona, pero no estoy obteniendo buenos resultados y no sé cómo optimizar el problema.

Lo que quiero aproximar:

imagen

Los resultados que obtuve:

imagen

Mi código es así de simple:

class Modelos:
    def __init__(self, PARA_PREDECIR): 
        self.Modelo = None
        self.PARA_PREDECIR = PARA_PREDECIR

    def modelo(self):
        self.Modelo = Sequential([
                                Lambda(lambda x: x[:, -1:, :]),
                                Dense(1, activation='relu'),
                                Dense(self.PARA_PREDECIR, activation='linear', kernel_initializer=initializers.zeros()),
                                Reshape([self.PARA_PREDECIR, 1])
                                ])

class CompilacionAjuste:
    def __init__(self, modelo, Datos):
        self.modelo = modelo
        self.Datos = Datos
        self.Historia = None
        self.Prediccion = None

    def compilar(self):
        self.modelo.compile(loss=losses.MeanSquaredError(),
                optimizer=Adam(learning_rate=0.01),
                metrics=[metrics.MeanAbsoluteError()])

    def ajustar(self):
        MAX_EPOCAS = 100
        self.Historia = self.modelo.fit(self.Datos.X, self.Datos.y, batch_size=16, epochs=MAX_EPOCAS,
                            validation_data=(self.Datos.X, self.Datos.y))

    def predecir(self):
        self.Prediccion = self.modelo.predict(self.Datos.X)

“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para optimizar el rendimiento del modelo, hay algunas cosas que puedes probar:

    1. Aumentar la complejidad del modelo: dado que estás tratando de ajustar una función polinomial de grado 3, es posible que un modelo denso simple con un solo neurón no tenga la capacidad suficiente para capturar la complejidad de la función. Puedes intentar aumentar el número de neuronas o agregar más capas al modelo.

    2. Cambiar la función de activación: la función de activación “relu” utilizada en el modelo actual puede que no sea la opción más adecuada para el problema. Puedes probar otras funciones de activación, como “tanh” o “sigmoid”, para ver si funcionan mejor.

    3. Ajustar la tasa de aprendizaje: la tasa de aprendizaje actual de 0.01 utilizada en el optimizador Adam puede que no sea óptima para el problema. Puedes probar diferentes tasas de aprendizaje o utilizar un programa de tasas de aprendizaje para mejorar la convergencia del modelo.

    4. Aumentar el número de épocas: el número máximo de épocas actual está establecido en 100. Puedes intentar aumentarlo para ver si el rendimiento del modelo mejora con el tiempo.

    5. Utilizar una función de pérdida más adecuada: la función de pérdida de error cuadrático medio (MSE) utilizada en el modelo actual puede que no sea la mejor opción para el problema. Dado que estás tratando de ajustar una función polinomial, puedes probar a utilizar una función de pérdida más adecuada para problemas de regresión, como el error absoluto medio (MAE) o el error logarítmico medio cuadrado (MSLE).

Comments are closed.