1
resposta

Loss Function Error

Ao treinar o modelo da aula 3.4 (abaixo), eu obtenho valores NaN para a loss functione em todas as épocas de treinamento. Porém se eu usar uma rede neural apenas com um neurônio, eu obtenho sucesso. O mesmo acontece com os modelos com mais camadas do capítulo 2. Achei que fosse algo que eu tivesse escrito errado, porém baixei o notebook fornecido do capítulo e aconteceu a mesma coisa. Tentei diminuir a quantidade de neurônios e usar a regularização L1 e L2, também tentei diminuir o learning rate do otimizador Adam, porém sem sucesso para ambos os casos.

1 - Modelo com erro

regressor3 = Sequential()
regressor3.add(Dense(8, input_dim=1, kernel_initializer='Ones', activation='linear', use_bias=False))
regressor3.add(Dense(64, kernel_initializer='random_uniform', activation='sigmoid', use_bias=False))
regressor3.add(Dense(1, kernel_initializer='random_uniform', activation='linear', use_bias=False))
regressor3.compile(loss='mse', optimizer='adam')
regressor3.fit(xtreino_novo, ytreino_novo, epochs=100)

1.1 - Parte dos dados de saída do modelo com erro

Epoch 1/100
1/5 [=====>........................] - ETA: 0s - loss: 0.9851WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0000s vs `on_train_batch_end` time: 0.0010s). Check your callbacks.
5/5 [==============================] - 0s 798us/step - loss: nan
Epoch 2/100 5/5 [==============================] - 0s 1ms/step - loss: nan
Epoch 3/100 5/5 [==============================] - 0s 1ms/step - loss: nan
Epoch 4/100 5/5 [==============================] - 0s 2ms/step - loss: nan
Epoch 5/100 5/5 [==============================] - 0s 2ms/step - loss: nan

2 - Modelo com sucesso, porém com menos neurônios

regressor = Sequential()
regressor.add(Dense(1, input_dim=1, kernel_initializer='Ones', activation='linear', use_bias=False))
regressor.compile(loss='mean_squared_error', optimizer='adam')
regressor.fit(xtreino, ytreino)

2.1 - Dados de saída do modelo com sucesso

5/5 [==============================] - 0s 1ms/step - loss: 0.1284
1 resposta

Oi Vinicius! Tudo bem com você? Espero que sim!

Desculpa pela demora em te trazer um retorno.

Testando com o banco de dados e o código fornecido pelo instrutor não encontrei nenhum erro NaN como o seu :/

Imagino que pode ter ocorrido algum bug na hora de baixar o arquivo, então peço para que você apague o atual e instale novamente o arquivo da aula.

Valores NaN significam em inglês "Not a number", que para o português significa "Não é um número". Esse valor normalmente aparece quando surgem dados faltantes no banco de dados lido, ou seja, seriam os espaços em branco como mostrado abaixo:

Alt text: Aplicativo LibreOffice/Openoffice Calc do Linux expondo o banco de dados Passageiros.csv com os espaços de 2B e 8B em branco, os quais tem uma seta vermelha apontando para cada espaço

Caso esse problema persista, uma solução seria substituir dos espaços em branco por dados numéricos, podendo ser pela a média de todos os valores numéricos da coluna passageiros. Ou então, apagar as linhas com dados NaN, vai do que você achar mais interessante para o banco.

Eu espero ter te ajudado! Se surgir outra dúvida estarei à disposição.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!