Ajuste fino: descongelamento e retreinamento
base_model.trainable = True, descongelamento camada a camada e taxas de aprendizado diferenciadas.
Ajuste fino: descongelamento e retreinamento é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Quando fazer o ajuste fino
Depois que a extração de características treinar sua camada final, o ajuste fino permite obter mais precisão ao adaptar a parte superior da base pré-treinada aos seus dados. Faça isso somente quando a camada final estiver estável; caso contrário, gradientes grandes de uma camada final aleatória podem danificar a base.
Descongelando a base
Defina base.trainable = True para tornar os pesos atualizáveis novamente. Por si só, isso descongela todas as camadas, o que geralmente é agressivo demais.
base.trainable = True
print("Trainable layers:", sum(l.trainable for l in base.layers))Congele as primeiras N camadas
As camadas iniciais contêm detectores genéricos de bordas e texturas que você deseja preservar. Congele novamente as primeiras N camadas e faça o ajuste fino apenas das camadas mais profundas e específicas da tarefa.
base.trainable = True
freeze_until = 100 # keep first 100 layers frozen
for layer in base.layers[:freeze_until]:
layer.trainable = False
for layer in base.layers[freeze_until:]:
layer.trainable = TruePor que usar uma taxa de aprendizado muito baixa
O ajuste fino exige uma taxa de aprendizado muito baixa, como 1e-5. Os pesos pré-treinados já são bons; você quer apenas fazer pequenos ajustes. Uma taxa alta causa esquecimento catastrófico, apagando o conhecimento do ImageNet que você veio reutilizar.
Recompile após descongelar
Você precisa recompilar depois de alterar as sinalizações trainable, para que o Keras reconstrua quais pesos recebem gradientes. Defina aqui a taxa de aprendizado baixa.
from tensorflow.keras.optimizers import Adam
model.compile(
optimizer=Adam(learning_rate=1e-5),
loss="categorical_crossentropy",
metrics=["accuracy"]
)O processo em duas fases
- Fase 1 (extração de características): base congelada; treine a camada final a aproximadamente 1e-3 até que a precisão de validação atinja um platô.
- Fase 2 (ajuste fino): descongele as camadas superiores, recompile com aproximadamente 1e-5 e continue o treinamento.
Dividir o processo dessa forma estabiliza o treinamento e protege as características pré-treinadas.
Continuando o treinamento na fase 2
Retome o treinamento do ponto em que a fase 1 parou usando initial_epoch, para que os registros e as programações permaneçam contínuos.
history2 = model.fit(
train_ds,
validation_data=val_ds,
epochs=20,
initial_epoch=10 # phase 1 ended at epoch 10
)Agendador da taxa de aprendizado
Um agendador reduz gradualmente a taxa de aprendizado ao longo do tempo, fazendo com que as atualizações diminuam à medida que o modelo converge. ReduceLROnPlateau a reduz automaticamente quando a perda de validação fica estagnada.
from tensorflow.keras.callbacks import ReduceLROnPlateau
lr_cb = ReduceLROnPlateau(
monitor="val_loss", factor=0.5,
patience=2, min_lr=1e-7
)
model.fit(train_ds, validation_data=val_ds,
epochs=20, callbacks=[lr_cb])Cuidado com BatchNorm
ResNet e EfficientNet contêm camadas BatchNormalization que acompanham estatísticas acumuladas. Ao fazer o ajuste fino, manter as camadas BN congeladas (ou no modo de inferência) geralmente produz resultados mais estáveis, pois atualizar suas estatísticas com um conjunto de dados pequeno pode prejudicar a precisão.
Fique atento ao sobreajuste
O ajuste fino adiciona muitos parâmetros treináveis, aumentando o risco de sobreajuste. Combata-o com aumento de dados, regularização por desligamento aleatório e EarlyStopping com base na perda de validação.
from tensorflow.keras.callbacks import EarlyStopping
stop = EarlyStopping(monitor="val_loss",
patience=4,
restore_best_weights=True)Juntando tudo
Uma execução robusta de ajuste fino consiste em: treinar o head, descongelar as camadas superiores, congelar BN, recompilar com 1e-5 e então treinar com um agendador e parada antecipada. Compare sempre a acurácia de validação antes e depois para confirmar que o ajuste fino realmente ajudou.
Verificação rápida
Teste seus conhecimentos sobre ajuste fino.
Recapitulação
Você aprendeu a fazer ajuste fino definindo base.trainable=True, congelando novamente as primeiras N camadas, recompilando com uma taxa de aprendizado muito baixa (1e-5) e executando um processo em duas fases. Um agendador da taxa de aprendizado e a parada antecipada mantêm o processo estável, e as camadas BatchNorm exigem atenção. A seguir: modelos leves para implantação em dispositivos de borda.
Aprenda Python com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 53
- Aulas
- 225
Perguntas Frequentes
A aula “Ajuste fino: descongelamento e retreinamento” é grátis?
Sim — o texto completo de “Ajuste fino: descongelamento e retreinamento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Ajuste fino: descongelamento e retreinamento”?
base_model.trainable = True, descongelamento camada a camada e taxas de aprendizado diferenciadas. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Ajuste fino: descongelamento e retreinamento”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Conceitos e estratégias de aprendizado por transferência
- Usando VGG16 e ResNet50 como modelos-base
- Ajuste fino: descongelamento e retreinamento
- MobileNet e EfficientNet para implantação na borda