使用 mnist 数据集,这是0-9的图片数据,我们使用神经网络去识别这些图片。显示图片上的数据
本质上是使用神经网络去分类。
https://morvanzhou.github.io/tutorials/machine-learning/keras/2-2-classifier/
# -*- coding: utf-8 -*-
""" Classifier 分类 """
from keras.datasets import mnist
import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt
# %% 数据处理、感受数据
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
for num in range(50):
plt.imshow(X_train[num,:,:],cmap=‘Greys_r‘)
plt.axis(‘off‘)
plt.show()
既然是图片数据集,我们可以通过显示图片来直接的了解这个数据集
X_train 是600002828 的矩阵,是一个灰度图像矩阵,6000张图片,图片大小为28*28
Y_trian 是 60000*1 的一维数组
将图片数据变为 6000*784 的矩阵,也就是新矩阵的一行代表一幅图片 使用 reshape
将标签数据化为 one_hot 使用函数 np_utils.to_categorical
""" Classifier 分类 """
from keras.datasets import mnist
import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
import numpy as np
np.random.seed(1337) # for reproducibility
from keras.models import Sequential
from keras.layers import Dense, Activation
import matplotlib.pyplot as plt
from keras.utils import np_utils
from keras.optimizers import RMSprop
model = Sequential(
[
Dense(32, input_dim = 784 ),
Activation(‘relu‘),
Dense(10),
Activation(‘softmax‘)
]
)
rmsprop = RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
Activation(‘softmax’) 其中softmax多用于分类问题,在是输出层中使用,输出一个类别的可能概率矩阵
RMSprop函数中:
参考连接
https://keras-cn.readthedocs.io/en/latest/legacy/other/optimizers/
model.compile(optimizer=rmsprop,loss=‘categorical_crossentropy’,metrics=[‘accuracy’])
model.fit(X_train,Y_train,epochs=2,batch_size=32)
loss,accuracy = model.evaluate(X_test,Y_test)
主要通过model.predict() 函数,使用训练好的神经网络,输出对 测试集 中第一章图片 img_0的预测
X_predict = X_test[:10,:]
X_predict = X_predict.reshape(10,28,28)
plt.imshow(X_predict[0,:,:],cmap=‘Greys_r‘)
plt.axis(‘off‘)
plt.show()
img_0 = X_test[0,:].reshape(1,784)
result = np.argmax(model.predict(img_0))
print(result)
参考
图片为:
预测为:
原文:https://www.cnblogs.com/Howbin/p/12582826.html