Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

942
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda