用Kersa搭建神经网络MNIST手写数据集

Posted darklights

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Kersa搭建神经网络MNIST手写数据集相关的知识,希望对你有一定的参考价值。

MNIST手写数据集的识别算得上是深度学习的”hello world“了,所以想要入门必须得掌握。新手入门可以考虑使用Keras框架达到快速实现的目的。

完整代码如下:

# 1. 导入库和模块
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D
from keras.layers import Dense, Flatten
from keras.utils import to_categorical

# 2. 加载数据
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 3. 数据预处理
img_x, img_y = 28, 28
x_train = x_train.reshape(x_train.shape[0], img_x, img_y, 1)
x_test = x_test.reshape(x_test.shape[0], img_x, img_y, 1)
#数据标准化
x_train = x_train.astype(float32)
x_test = x_test.astype(float32)
x_train /= 255
x_test /= 255
#一位有效编码
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# 4. 定义模型结构
model = Sequential()
model.add(Conv2D(32, kernel_size=(5,5), activation=relu, input_shape=(img_x, img_y, 1)))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Conv2D(64, kernel_size=(5,5), activation=relu))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(1000, activation=relu))
model.add(Dense(10, activation=softmax))

# 5. 编译,声明损失函数和优化器
model.compile(optimizer=adam,loss=categorical_crossentropy,metrics=[accuracy])

# 6. 训练
model.fit(x_train, y_train, batch_size=128, epochs=10)

# 7. 评估模型
score = model.evaluate(x_test, y_test)
print(acc, score[1])

运行结果如下:

技术图片 

可以看出准确率达到了99%,说明神经网络在图像识别上具有巨大的优势。

以上是关于用Kersa搭建神经网络MNIST手写数据集的主要内容,如果未能解决你的问题,请参考以下文章

[Pytorch系列-40]:卷积神经网络 - 模型的恢复/加载 - 搭建LeNet-5网络与MNIST数据集手写数字识别

[Pytorch系列-41]:卷积神经网络 - 模型参数的恢复/加载 - 搭建LeNet-5网络与MNIST数据集手写数字识别

matlab练习程序(神经网络识别mnist手写数据集)

matlab练习程序(神经网络识别mnist手写数据集)

[Pytorch系列-34]:卷积神经网络 - 搭建LeNet-5网络与MNIST数据集手写数字识别

手写数字识别——基于全连接层和MNIST数据集