Я использую базовый c NN для обучения и проверки точности на наборе данных MNIST.
Система: i5 8th Gen, GPU - Nvidia 1050Ti
Вот мой код:
from __future__ import print_function,absolute_import,unicode_literals,division
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train,y_train) , (x_test,y_test) = mnist.load_data()
#x_train , y_train = x_train/255.0 , y_train/255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28,28)),
tf.keras.layers.Dense(312,activation='relu'),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Dense(10,activation='softmax')
])
model.compile(
optimizer='Adamax',
loss="sparse_categorical_crossentropy",
metrics=['accuracy']
)
model.fit(x_train,y_train,epochs=5)
model.evaluate(x_test,y_test)
Когда я нормализую изображения, как в 5-й строке, точность падает ужасно:
loss: 10392.0626 - accuracy: 0.0980
Однако, когда я не нормализую их, это дает:
- loss: 0.2409 - accuracy: 0.9420
В целом, нормализация данных помогает градиентному спуску сходиться быстрее. Почему эта огромная разница? Чего мне не хватает?