Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

944
Vistas
Keras: cambiar la tasa de aprendizaje

Estoy tratando de cambiar la tasa de aprendizaje de mi modelo después de haberlo entrenado con una tasa de aprendizaje diferente.

Leí aquí , aquí , aquí y algunos otros lugares que ya ni siquiera puedo encontrar.

Lo intenté:

 model.optimizer.learning_rate.set_value(0.1) model.optimizer.lr = 0.1 model.optimizer.learning_rate = 0.1 K.set_value(model.optimizer.learning_rate, 0.1) K.set_value(model.optimizer.lr, 0.1) model.optimizer.lr.assign(0.1)

... pero ninguno de ellos funcionó! No entiendo cómo puede haber tanta confusión en torno a algo tan simple. ¿Me estoy perdiendo de algo?

EDITAR: ejemplo de trabajo

Aquí hay un ejemplo práctico de lo que me gustaría hacer:

 from keras.models import Sequential from keras.layers import Dense import keras import numpy as np model = Sequential() model.add(Dense(1, input_shape=(10,))) optimizer = keras.optimizers.Adam(lr=0.01) model.compile(loss='mse', optimizer=optimizer) model.fit(np.random.randn(50,10), np.random.randn(50), epochs=50) # Change learning rate to 0.001 and train for 50 more epochs model.fit(np.random.randn(50,10), np.random.randn(50), initial_epoch=50, epochs=50)
over 4 years ago · Santiago Trujillo
6 Respuestas
Responde la pregunta

0

Debes definirlo en la función de compilación:

 optimizer = keras.optimizers.Adam(lr=0.01) model.compile(loss='mse', optimizer=optimizer, metrics=['categorical_accuracy'])

Mirando su comentario, si desea cambiar la tasa de aprendizaje después del comienzo, necesita usar un programador: enlace

Edite con su código y planificador:

 from keras.models import Sequential from keras.layers import Dense import keras import numpy as np def lr_scheduler(epoch, lr): if epoch > 50: lr = 0.001 return lr return lr model = Sequential() model.add(Dense(1, input_shape=(10,))) optimizer = keras.optimizers.Adam(lr=0.01) model.compile(loss='mse', optimizer=optimizer) callbacks = [keras.callbacks.LearningRateScheduler(lr_scheduler, verbose=1)] model.fit(np.random.randn(50,10), np.random.randn(50), epochs=100, callbacks=callbacks)
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes cambiar lr durante el entrenamiento con

 from keras.callbacks import LearningRateScheduler # This is a sample of a scheduler I used in the past def lr_scheduler(epoch, lr): decay_rate = 0.85 decay_step = 1 if epoch % decay_step == 0 and epoch: return lr * pow(decay_rate, np.floor(epoch / decay_step)) return lr

Aplicar planificador a su modelo

 callbacks = [LearningRateScheduler(lr_scheduler, verbose=1)] model = build_model(pretrained_model=ka.InceptionV3, input_shape=(224, 224, 3)) history = model.fit(train, callbacks=callbacks, epochs=EPOCHS, verbose=1)
over 4 years ago · Santiago Trujillo Denunciar

0

Suponga que usa el optimizador de Adam en keras , le gustaría definir su optimizador antes de compilar su modelo con él.

Por ejemplo, puede definir

 myadam = keras.optimizers.Adam(learning_rate=0.1)

Luego, compila su modelo con este optimizador.

En caso de que desee cambiar su optimizador (con un tipo diferente de optimizador o con una tasa de aprendizaje diferente), puede definir un nuevo optimizador y compilar su modelo existente con el nuevo optimizador.

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Denunciar

0

Hay otra forma, tienes que encontrar la variable que contiene la tasa de aprendizaje y asignarle otro valor.

 optimizer = tf.keras.optimizers.Adam(0.001) optimizer.learning_rate.assign(0.01) print(optimizer.learning_rate)

producción:

 <tf.Variable 'learning_rate:0' shape=() dtype=float32, numpy=0.01>
over 4 years ago · Santiago Trujillo Denunciar

0

Puede cambiar la tasa de aprendizaje de la siguiente manera:

 from keras import backend as K K.set_value(model.optimizer.learning_rate, 0.001)

Incluido en su ejemplo completo, se ve de la siguiente manera:

 from keras.models import Sequential from keras.layers import Dense from keras import backend as K import keras import numpy as np model = Sequential() model.add(Dense(1, input_shape=(10,))) optimizer = keras.optimizers.Adam(lr=0.01) model.compile(loss='mse', optimizer=optimizer) print("Learning rate before first fit:", model.optimizer.learning_rate.numpy()) model.fit(np.random.randn(50,10), np.random.randn(50), epochs=50, verbose=0) # Change learning rate to 0.001 and train for 50 more epochs K.set_value(model.optimizer.learning_rate, 0.001) print("Learning rate before second fit:", model.optimizer.learning_rate.numpy()) model.fit(np.random.randn(50,10), np.random.randn(50), initial_epoch=50, epochs=50, verbose=0)

Acabo de probar esto con Keras 2.3.1. No estoy seguro de por qué el enfoque no pareció funcionar para usted.

over 4 years ago · Santiago Trujillo Denunciar

0

Hace un tiempo tuve un proyecto para el cual necesitaba algo similar. Mi idea para cambiar la tasa de aprendizaje fue compilar un nuevo modelo con la nueva tasa, luego cargar los pesos de los parámetros del modelo anterior al nuevo.

Para tu ejemplo:

 from keras.models import Sequential from keras.layers import Dense import keras import numpy as np # Initial model model = Sequential() model.add(Dense(1, input_shape=(10,))) optimizer = keras.optimizers.Adam(lr=0.01) model.compile(loss='mse', optimizer=optimizer) model.fit(np.random.randn(50,10), np.random.randn(50), epochs=50) # Change learning rate to 0.001 and train for 50 more epochs new_model = Sequential() new_model.add(Dense(1, input_shape=(10,))) optimizer = keras.optimizers.Adam(lr=0.001) new_model.compile(loss='mse', optimizer=optimizer) new_model.set_weights(model.get_weights()) model = new_model model.fit(np.random.randn(50,10), np.random.randn(50), initial_epoch=50, epochs=50)

Con esto podrías ver un peor ajuste de tu modelo en las primeras épocas porque ADAM usa pasos anteriores para optimizar y los perderás.

¡Espero que ayude a alguien!

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda