MLP数字识别

from keras.datasets import mnist
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
%matplotlib inline

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

#可视化第一个数据
plt.figure()
plt.imshow(x_train[0])
plt.title(y_train[0])
image.png
#图像特征数量
feature_size =  x_train[0].shape[0] * x_train[0].shape[1]
#训练数据格式转换
x_train_form = x_train.reshape(x_train.shape[0], feature_size)
#测试数据转换
x_test_form = x_test.reshape(x_test.shape[0], feature_size)

# 数据归一化
x_train_normal = x_train_form / 255
x_test_normal = x_test_form / 255

from keras.utils import to_categorical

#标签归一化
y_train_normal = to_categorical(y_train)
y_test_normal = to_categorical(y_test)

from keras.models import Sequential
from keras.layers import Dense,Activation

#建立模型,两个隐藏层392个神经元,输出层10个神经元,多分类
mlp = Sequential()
mlp.add(Dense(units=392, activation="sigmoid", input_dim=feature_size))
mlp.add(Dense(units=392, activation="sigmoid"))
mlp.add(Dense(units=10, activation="softmax"))

#模型配置
mlp.compile(loss="categorical_crossentropy", optimizer="adam")  #多分类

#模型训练
mlp.fit(x_train_normal, y_train_normal, epochs=10)

# 模型评估
y_train_predict = mlp.predict(x_train_form)
y_train_predict = np.argmax(y_train_predict, axis=1)

# 准确率
from sklearn.metrics import accuracy_score
accuracy_score(y_train, y_train_predict)

#测试集准确率
y_test_predict = mlp.predict(x_test_form)
y_test_predict = np.argmax(y_test_predict, axis=1)
accuracy_score(y_test, y_test_predict)     #0.9763

#可视化测试集第6个
plt.figure()
plt.imshow(x_test[5])
plt.title(y_test_predict[5])
image.png

你可能感兴趣的:(MLP数字识别)