1
resposta

Tive um redução da perda adicionando mais camadas

Curiosamente tive uma redução da perda colocando as camadas adicionais como mostrado na aula. Fiquei confusão do porquê isso ter acontecido. Alguém teria alguma ideia?

modelo_teste = keras.Sequential( [keras.layers.Flatten(input_shape = (28, 28) ),
                            keras.layers.Dense(256, activation = tensorflow.nn.relu),
                            keras.layers.Dense(128, activation = tensorflow.nn.relu),
                            keras.layers.Dense(64, activation = tensorflow.nn.relu),
                            keras.layers.Dense(10, activation = tensorflow.nn.softmax) ])

#Vamos dar um compile e ver a perda
modelo_teste.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy')
modelo_teste.fit(x_treino, y_treino)

output:

60000/60000 [==============================] - 6s 105us/sample - loss: 0.4841

<tensorflow.python.keras.callbacks.History at 0x7f60c5a7d3c8>

A perda do modelo com 3 camadas foi 0.86.

1 resposta

Olá Pedro.

Recomendo você colocar a parte da normalização do x_treino em uma célula diferente da célula da criação e treinamento do modelo. E também criar uma nova variável para o seu x normalizado, ficando assim:

x_treino_normalizado = x_treino/float(255)

Não esqueça também de incluir essa modificação no treinamento, incluindo a nova variável x_treino_normalizado.

modelo_teste.fit(x_treino_normalizado , y_treino)

O resultado final dessa célula será esse:

modelo_teste = keras.Sequential( [keras.layers.Flatten(input_shape = (28, 28) ),
                            keras.layers.Dense(256, activation = tensorflow.nn.relu),
                            keras.layers.Dense(128, activation = tensorflow.nn.relu),
                            keras.layers.Dense(64, activation = tensorflow.nn.relu),
                            keras.layers.Dense(10, activation = tensorflow.nn.softmax) ])

#Vamos dar um compile e ver a perda
modelo_teste.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy')
modelo_teste.fit(x_treino_normalizado , y_treino)

Acredito que dessa maneira o seu resultado será diferente e poderá ver que não temos muitos ganhos em adicionar novas camadas na nossa situação.

1 camada

1875/1875 [==============================] - 6s 3ms/step - loss: 0.4877 <tensorflow.python.keras.callbacks.History at 0x7f96749e1b00>

3 camada

1875/1875 [==============================] - 7s 4ms/step - loss: 0.4888 <tensorflow.python.keras.callbacks.History at 0x7f9674891128>

Acredito que você teve esse resultado inesperado porque a sua variável x_treino esta sendo normalizada todas as vezes que você roda o treinamento, portanto treinando com dados diferentes.

Espero ter te ajudado, qualquer duvida não hesite em perguntar.

Bons Estudos