使用MNIST数据集训练模型使用自己的图片验证模型

使用MNIST数据集训练模型

from keras.datasets import mnist
from keras.utils import np_utils
import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPooling2D
#数据准备
(x_Train,y_Train),(x_Test,y_Test)=mnist.load_data()
x_Train4D=x_Train.reshape(x_Train.shape[0],28,28,1).astype('float32')
x_Test4D=x_Test.reshape(x_Test.shape[0],28,28,1).astype('float32')
x_Train4D_normalize=x_Train4D/255
x_Test4D_normalize=x_Test4D/255
y_TrainOneHot=np_utils.to_categorical(y_Train)
y_TestOneHot=np_utils.to_categorical(y_Test)
#模型建立
model=Sequential()
model.add(Conv2D(filters=16,
                 kernel_size=(5,5),
                 padding='same',
                 input_shape=(28,28,1),
                 activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(filters=36,
                 kernel_size=(5,5),
                 padding='same',
                 activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128,activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(10,activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
train_history=model.fit(x=x_Train4D_normalize,
                        y=y_TrainOneHot,
                        validation_split=0.2,
                        epochs=10,
                        batch_size=300,
                        verbose=2)
scores=model.evaluate(x_Test4D_normalize,y_TestOneHot)
print(scores)
model.save('model.h5')

使用自己的图片验证模型

import numpy as np
from keras.models import load_model
from PIL import Image
#加载模型
model=load_model('model.h5')
#读取图片
im=Image.open('9.png')
#将RGB彩色图像转为灰度图像 0-255   0 最黑   255 最白
im = im.convert('L')
#将图片调整为为28*28大小的图像 Image.ANTIALIAS高质量调整,清晰度更高点  Image.NEAREST低质量调整
im = im.resize((28,28),Image.ANTIALIAS)
#将图片显示出来,看下效果
#im.show()
image_list = []
for x in range(28):
    scanline_list = []
    for y in range(28):
        #获得这张图片每个像素点的值
        pixel = im.getpixel((y, x))
        pixel= 255-pixel
        scanline_list.append(pixel)
    image_list.append(scanline_list)
#转成模型能够接受的数据类型
arr1 = np.array(image_list).reshape((1, 28, 28, 1))
print(arr1)
model=load_model('model.h5')
prediction = model.predict(arr1)
print('是0的概率:'+'%.4f' %prediction[0][0])
print('是1的概率:'+'%.4f' %prediction[0][1])
print('是2的概率:'+'%.4f' %prediction[0][2])
print('是3的概率:'+'%.4f' %prediction[0][3])
print('是4的概率:'+'%.4f' %prediction[0][4])
print('是5的概率:'+'%.4f' %prediction[0][5])
print('是6的概率:'+'%.4f' %prediction[0][6])
print('是7的概率:'+'%.4f' %prediction[0][7])
print('是8的概率:'+'%.4f' %prediction[0][8])
print('是9的概率:'+'%.4f' %prediction[0][9])

你可能感兴趣的:(神经网络,Python,MNIST,验证模型,model)