'''
Python keras MNIST 数字识别 H5的训练与评估 by 郑瑞国
'''
from keras import models
from keras import layers
from keras.utils import to_categorical
from keras.datasets import mnist
(train_images,train_labels),(test_images,test_labels) = mnist.load_data()
network = models.Sequential()
network.add(layers.Dense(512,activation='relu',input_shape=(28*28,)))
network.add(layers.Dense(10,activation='softmax'))
network.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
train_images = train_images.reshape((60000,28*28))
train_images = train_images.astype('float32')/255
test_images = test_images.reshape((10000,28*28))
test_images = test_images.astype('float32')/255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
network.fit(train_images[0:60000],train_labels[0:60000],epochs=5,batch_size=128)
network.save('./MNISTKerasTrainAndTast.h5')
network = models.load_model('MNISTKerasTrainAndTast.h5')
test_loss,test_acc = network.evaluate(test_images[0:1000],test_labels[0:1000])
print('test_acc:',test_acc)
'''
Python keras MNIST 数字识别 H5的使用与评估 by 郑瑞国
'''
from keras import models
from keras import layers
from keras.utils import to_categorical
import matplotlib.pyplot as plt
from keras.datasets import mnist
(train_images,train_labels),(test_images,test_labels) = mnist.load_data()
test_data = test_images
model = models.load_model('MNISTKerasTrainAndTast.h5')
train_images = train_images.reshape((60000,28*28))
train_images = train_images.astype('float32')/255
test_images = test_images.reshape((10000,28*28))
test_images = test_images.astype('float32')/255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
test_loss,test_acc = model.evaluate(test_images[0:1000],test_labels[0:1000])
print('test_acc:',test_acc)
for i in range(10):
classes = model.predict(test_images[i:i+1])
print(classes,test_labels[i:i+1])
plt.imshow(test_data[i],cmap=plt.cm.binary)
plt.show()