1
resposta

Recompilando e treinando o modelo

No vídeo, a célula que treina o modelo contém na primeira linha a normalização do valor do pixel (de 0-255 para 0.00-1.00).

#nomalização
imagens_treino = imagens_treino/float(255)

modelo = keras.Sequential[...]
modelo.compile([...])
modelo.fit([...])

Quando esta célula é executada pela segunda vez as imagens_treino são transformadas novamente, por exemplo: Se o pixel original tinha o valor 230, ele será normalizado para 0.902 (230/255), é exatamente o que queríamos. Na segunda execução ele será normalizado para 0.0035 (0.902/255) e o valor máximo nesse conjunto será 0.0039 (1/255), gerando um erro maior. O erro estava 2.3 no minuto 1:00 do vídeo e depois do restart runtime o erro foi de 0.45 no minuto 3:10 pois os dados estão normalizados de 0 à 1.

Além do runtime a solução pode ser isolar esta célula para ser executada uma vez ou trocar o 255 fixo para o valor máximo do pixel, que na primeira vez será 255 e na segunda 1.00, assim se tentar normalizar novamente não fará diferença (imagens_treino/1.00)

Utilizei este código e assim o erro não passou de 1.

valor_maximo_pixel = np.amax(imagens_treino)
imagens_treino = imagens_treino/float(valor_maximo_pixel)

Isso está correto?

1 resposta

Olá Luis.

Você está correto, vamos incluir um aviso nessa atividade.

A solução que fiz foi trocar o nome da variável, então sem reutilizar essa variável x_train não teremos esse problema.

x_train_normalized = x_train / float(255)

Na ultima aula do curso a instrutora isola essa parte do código e explica as importâncias de ter um código organizado e com 'módulos' bem definidos.

Muito obrigado pelo aviso, bons estudos.