Como escolher a melhor taxa de aprendizado e otimizador usando LearningRateScheduler

Leo

Conheço o LearningRateScheduler do curso Coursera, mas copiá-lo da mesma forma resultará em um desempenho ruim do modelo. Talvez devido ao intervalo que configurei. As instruções do site Keras são limitadas.


def duo_LSTM_model(X_train, y_train, X_test,y_test,num_classes,batch_size=68,units=128, learning_rate=0.005, epochs=20, dropout=0.2, recurrent_dropout=0.2 ):

    model = tf.keras.models.Sequential()
    model.add(tf.keras.layers.Masking(mask_value=0.0, input_shape=(X_train.shape[1], X_train.shape[2])))
    model.add(tf.keras.layers.Bidirectional(LSTM(units, dropout=dropout, recurrent_dropout=recurrent_dropout,return_sequences=True)))
    model.add(tf.keras.layers.Bidirectional(LSTM(units, dropout=dropout, recurrent_dropout=recurrent_dropout)))
    model.add(Dense(num_classes, activation='softmax'))

    adamopt = tf.keras.optimizers.Adam(lr=learning_rate, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
    RMSopt = tf.keras.optimizers.RMSprop(lr=learning_rate, rho=0.9, epsilon=1e-6)
    SGDopt = tf.keras.optimizers.SGD(lr=learning_rate, momentum=0.9, decay=0.1, nesterov=False)


    lr_schedule = tf.keras.callbacks.LearningRateScheduler(
    lambda epoch: 1e-8 * 10**(epoch / 20))

    model.compile(loss='binary_crossentropy',
                  optimizer=adamopt,
                  metrics=['accuracy'])

    history = model.fit(X_train, y_train,
                        batch_size=batch_size,
                        epochs=epochs,
                        validation_data=(X_test, y_test),
                        verbose=1,
                        callbacks=[lr_schedule])

    score, acc = model.evaluate(X_test, y_test,
                                batch_size=batch_size)

    yhat = model.predict(X_test)

    return history, that

Eu tenho duas perguntas.

  1. Como 1e-8 * 10**(epoch / 20)isso funciona?

  2. Como devemos escolher o intervalo para os 3 otimizadores diferentes?

meTchaikovsky

Antes de responder às duas perguntas em sua postagem, vamos primeiro esclarecer que LearningRateSchedulernão se trata de escolher a 'melhor' taxa de aprendizado.

Uma alternativa ao uso de uma taxa de aprendizado fixa é variar a taxa de aprendizado ao longo do processo de treinamento.

Acho que o que você realmente quer perguntar é "como determinar a melhor taxa de aprendizado inicial ". Se eu estiver correto, você precisa aprender sobre o ajuste de hiperparâmetros.


Resposta à Q1:

Para responder como 1e-8 * 10**(epoch / 20)funciona, vamos criar uma tarefa de regressão simples

import tensorflow as tf 
import tensorflow.keras.backend as K
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input,Dense

x = np.linspace(0,100,1000)
y = np.sin(x) + x**2

x_train,x_val,y_train,y_val = train_test_split(x,y,test_size=0.3)

input_x = Input(shape=(1,))
y = Dense(10,activation='relu')(input_x)
y = Dense(1,activation='relu')(y)
model = Model(inputs=input_x,outputs=y)

adamopt = tf.keras.optimizers.Adam(lr=0.01, beta_1=0.9, beta_2=0.999, epsilon=1e-8)

def schedule_func(epoch):
    print()
    print('calling lr_scheduler on epoch %i' % epoch)
    print('current learning rate %.8f' % K.eval(model.optimizer.lr))
    print('returned value %.8f' % (1e-8 * 10**(epoch / 20)))
    return 1e-8 * 10**(epoch / 20)
    
lr_schedule = tf.keras.callbacks.LearningRateScheduler(schedule_func)

model.compile(loss='mse',optimizer=adamopt,metrics=['mae'])
history = model.fit(x_train,y_train,
                    batch_size=8,
                    epochs=10,
                    validation_data=(x_val, y_val),
                    verbose=1,
                    callbacks=[lr_schedule])

No script acima, em vez de usar uma lambdafunção, escrevi uma função schedule_func. Executando o script, você verá que 1e-8 * 10**(epoch / 20)basta definir a taxa de aprendizado para cada um epoch, e a taxa de aprendizado está aumentando.

Resposta à Q2:

Há um monte de postagens legais, por exemplo

  1. Configurando a taxa de aprendizado de sua rede neural.
  2. Escolha de uma taxa de aprendizagem

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como alterar a taxa de aprendizado com base na precisão da época anterior usando keras Estou usando um otimizador SGD?

PyTorch: Como alterar a taxa de aprendizado de um otimizador a qualquer momento (sem programação de LR)

Como você define a taxa de aprendizado do otimizador Adam em tensorflow.js?

Como alterar a taxa de aprendizado no Tensorflow dependendo do número de lotes e épocas?

Como posso implementar a parada antecipada e reduzir a taxa de aprendizado no platô no Tensorflow?

Tensorflow: como definir a taxa de aprendizado em escala logarítmica e algumas questões do Tensorflow

Como definir a taxa de aprendizado adaptável para o GradientDescentOptimizer?

Como aplicar a taxa de aprendizado em camadas no Pytorch?

PyTorch - Como obter taxa de aprendizado durante o treinamento?

Como definir a taxa de aprendizado em camadas no Tensorflow?

Qual é a diferença entre o tamanho do passo e a taxa de aprendizado no aprendizado de máquina?

Keras: alterar a taxa de aprendizado

Existe alguma relação entre a taxa de aprendizado e a taxa de abandono na Deep Neural Network?

Otimizador de aprendizado de máquina Python Tflearn, perda e parâmetros

como escolher a melhor loja usando a classificação do banco de dados em PHP

Como escolher o melhor modelo das curvas de precisão e perda de trem / val?

Como definir a taxa de aprendizagem de um otimizador em Flux.jl

obtendo a melhor taxa de câmbio usando sql

otimizador adam e otimizador de momentum

Como devo entender a taxa de aprendizado de aquecimento na API de detecção de objetos tensorflow?

Obter taxa de aprendizado do modelo keras

Como implementar a taxa de aprendizado de decaimento exponencial em Keras seguindo as etapas globais

Como criar uma rede neural de 3 camadas simples e ensiná-la usando o aprendizado supervisionado?

Como a taxa de aprendizado deve mudar conforme o tamanho do lote muda?

keras: como usar o declínio da taxa de aprendizado com model.train_on_batch ()

Como posso obter a taxa de aprendizado durante o treinamento com AdamOptimizer ?? (Tensorflow)

Implementar um otimizador semelhante ao aprendizado de máquina

Como funciona o otimizador de Clojure e onde ele está?

Como funciona o otimizador de Clojure e onde ele está?

TOP lista

  1. 1

    Não foi possível carregar o arquivo ou montagem 'System.Runtime.InteropServices.RuntimeInformation

  2. 2

    Cannot resolve symbol Apache in Intellij

  3. 3

    Dependency Chain: category -> shop => category in model sequelizejs while defining foreign key

  4. 4

    Adicionando leads objetivo remontar a "Erro ao criar feijão com o nome 'EntityManagerFactory'"

  5. 5

    Como faço para remover zeros à esquerda antes de um ponto decimal? O Excel está formatado, mas o Combobox em meu formulário de usuário os está adicionando

  6. 6

    Combobox border or arrow remove in tkinter

  7. 7

    PhpStorm: SCSS File Watcher - como desabilitar mapas de origem?

  8. 8

    Fazendo a média de várias séries temporais junto com intervalo de confiança (com código de teste)

  9. 9

    Falha do aplicativo Spring Boot - Erro pacote java não existe

  10. 10

    Rolando ListViews juntos

  11. 11

    Spin: erro, a versão do spin que gerou este pan.c assumiu um tamanho de palavra diferente (4 iso 8)

  12. 12

    ViewPager com vários filhos visíveis e maior selecionado

  13. 13

    Não foi possível comprar com a oferta de assinatura

  14. 14

    Como chamar um método de serviço com Thymeleaf

  15. 15

    Erro de compilação do gRPC usando Visual Studio 2019 C #

  16. 16

    R no erro MacOS: memória do vetor esgotada (limite atingido?)

  17. 17

    Defina a largura do elemento posicionado de forma absoluta para seu conteúdo (é apenas um texto)

  18. 18

    Python cria md5, atualização e hexdigest em uma linha

  19. 19

    Plotly: Como adicionar média e desvio padrão a uma figura create_displot?

  20. 20

    Veicule arquivos estáticos (JavaScript) com Struts 2

  21. 21

    C # HttpClient - posso forçar o fechamento da conexão?

quentelabel

Arquivo