为什么我的准确性不高?

时间:2019-05-08 18:19:01

标签: python machine-learning keras

我有一个代码来训练MNIST数据集以处理街景门牌号码项目,但是运行代码时,我的acc = 0,1

导入库和模块

import numpy as np
np.random.seed(123)  # for reproducibility
from keras import backend as K
K.set_image_dim_ordering('th')
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist
from keras.models import load_model
from keras.utils import CustomObjectScope
from keras.initializers import glorot_uniform

4。将经过预混合的MNIST数据加载到训练和测试集中

(X_train, Y_train), (X_test, Y_test) = mnist.load_data()

X_train = keras.utils.normalize(X_train,axis=1)
X_test = keras.utils.normalize(X_test, axis=1)

7。定义模型架构

model = Sequential()



model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

8。编译模型

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

9。在训练数据上拟合模型

model.fit(np.array(X_train), np.array(Y_train), batch_size=32, epochs=3,verbose=1)          

2 个答案:

答案 0 :(得分:0)

在步骤4中,您是否正确规范了数据?如果我没记错的话,X_train的形状为batch, width, height。我真的不知道您要标准化什么,但是axis=1似乎不应该在那里。我认为您应该将其标准化。

如果您的准确性仍然较低,请尝试训练比3个更多的时期。3个时期并不多。

答案 1 :(得分:0)

您具有这样的准确性有几个原因。

  1. 您的数据未正确规范化。
  2. 您正在尝试在3个时间段内用3个密集层进行图像识别,这将不起作用。
  3. 您的代码中没有优化。

查看https://keras.io/examples/mnist_cnn/。这是Keras关于使用神经网络处理MNIST数据的文档。