为什么要归一化MNIST图像会降低准确性?

问题描述 投票:0回答:2

我正在使用基本的NN来训练和测试MNIST数据集的准确性。

系统:i5第8代,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)

当我按照第五行对图像进行归一化时,精度会急剧下降:

loss: 10392.0626 - accuracy: 0.0980

但是当我不规范它们时,它给出了:

- loss: 0.2409 - accuracy: 0.9420

通常,对数据进行归一化有助于梯度下降更快地收敛。为什么会有如此巨大的差异?我想念什么?

python tensorflow deep-learning neural-network mnist
2个回答
1
投票

使用此:

(x_train, y_train) , (x_test,y_test) = mnist.load_data()
x_train , x_test = x_train/255.0 , x_test/255.0

您将标签除以255,因此无法正常归一化。


0
投票

您需要对训练集和测试集进行相同的归一化。如果您使用预先训练的网络,则应该执行与培训者相同的归一化操作;在这里您缺少标准化测试集。

x_train , y_train = x_train/255.0 , y_train/255.0
x_test , y_test = x_test/255.0 , y_test/255.0

不客气。

© www.soinside.com 2019 - 2024. All rights reserved.