Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Projeto] Sessão 4 - DataLoader e Fluxo de Treinamento

Ao alterar o batch_size para 100, 20 e 5, observei que o tamanho do lote impacta diretamente o tempo de cada época e o comportamento da convergência. Com batch_size = 100, cada época foi mais rápida, levando em média 7.68 segundos, mas a loss ficou abaixo de 1.6 apenas na época 2. Com batch_size = 20, o tempo médio por época foi de 14.45 segundos e a loss ficou abaixo de 1.6 já na época 1. Com batch_size = 5, a loss também ficou abaixo de 1.6 na época 1 e chegou ao menor valor final, 1.4870, porém o tempo por época aumentou bastante, chegando a 44.63 segundos. Assim, percebi que batches menores podem favorecer atualizações mais frequentes e reduzir a loss, mas aumentam o custo computacional. Neste experimento, o batch_size = 20 pareceu oferecer o melhor equilíbrio entre tempo de treinamento e convergência.

Batch sizeTempo médio por épocaÉpoca em que a loss ficou abaixo de 1.6Loss final
1007.68sépoca 21.5086
2014.45sépoca 11.4910
544.63sépoca 11.4870

Segue o link do código:https://github.com/Moquiuti/Rede-Neural-Deep-Learning-com-PyTorch/blob/main/Carregamento_de_Dados.ipynb

2 respostas

Ei! Tudo bem, Leandro?

Que ótima análise sobre o impacto do batch size no fluxo de treinamento usando Deep Learning com PyTorch! Seu experimento prático ilustra perfeitamente o clássico trade-off (equilíbrio) entre eficiência computacional e convergência da loss.

Verdade, batches maiores (100), processam mais dados paralelamente na GPU/CPU, tornando as épocas mais rápidas, porém realizam menos atualizações nos pesos por época, o que pode desacelerar a convergência inicial. E batches menores (5), atualizam os pesos da rede neural muito mais vezes por época (gradiente estocástico), gerando uma convergência mais rápida da loss, mas o custo de comunicação e processamento serializado eleva drasticamente o tempo de execução.

O tamanho de lote igual a 20 foi o melhor ponto de equilíbrio para este cenário. Essa sensibilidade para ajustar hiperparâmetros é uma habilidade indispensável para quem trabalha com redes neurais. Parabéns pelo empenho e pela excelente organização dos dados!

Você chegou a notar se a oscilação (o "ruído") da loss durante o treino mudou muito de comportamento entre o lote de 5 e o de 100?

Ah, Leandro, consegui acessar o seu Github. \o/ O erro estava no markdown que estava quebrando o link, rsrs.

Conteúdos para complementar seus estudos
Esse conteúdo pode estar em inglês, para traduzi-lo utilize o tradutor automático do navegador ou clique com o botão direito do mouse sobre a página e selecione a opção Traduzir para o português.
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Olá Nathalia, tudo bem? eu fiquei muito feliz que conseguiu acessar o git, sério! kkkkkkkkkkkkkkkk
muito obrigado pelo seu feedback!
Sobre o seu questionamento a resposta é sim, percebi que com batch_size = 5 a loss ficou mais instável/ruidosa, mas caiu mais rápido por causa das atualizações mais frequentes dos pesos. Com batch_size = 100, a loss teve um comportamento mais estável, porém a convergência foi mais lenta. Isso reforça o trade-off entre velocidade de convergência e estabilidade durante o treinamento.