埃尔法哥哥■卷积神经网络使用Python的手写数字识别
为了使机器更智能 , 开发人员正在研究机器学习和深度学习技术 。 人类通过反复练习和重复执行任务来学习执行任务 , 从而记住了如何执行任务 。 然后 , 他大脑中的神经元会自动触发 , 它们可以快速执行所学的任务 。 深度学习与此也非常相似 。 它针对不同类型的问题使用不同类型的神经网络体系结构 。 对象识别 , 图像和声音分类 , 对象检测 , 图像分割等 。
什么是手写数字识别?
手写数字识别是计算机识别人类手写数字的能力 。 对于机器而言 , 这是一项艰巨的任务 , 因为手写数字不是完美的 , 可以用多种方法 。 手写数字识别是使用数字图像并识别图像中存在的数字的解决方案 。
在本文中 , 我们将使用MNIST数据集实现一个手写数字识别应用程序 。 我们将使用一种特殊类型的深度神经网络 , 即卷积神经网络 。 最后 , 我们将构建一个GUI , 您可以在其中绘制数字并立即识别它 。
在这里我们使用Keras库和Tkinter库进行深度学习以构建GUI 。
MNIST数据集
这可能是机器学习和深度学习爱好者中最受欢迎的数据集之一 。 该MNIST数据集包含的手写数字从0到9 60000个训练图像和10,000张进行测试 。 因此 , MNIST数据集具有10个不同的类 。 手写数字图像表示为28×28矩阵 , 其中每个单元格都包含灰度像素值 。
本文插图
步骤如下:
1、导入库并加载数据集
首先 , 我们将导入训练模型所需的所有模块 。 Keras库已经包含一些数据集 , 而MNIST是其中之一 。 因此 , 我们可以轻松导入数据集并开始使用它 。 该mnist.load_data()方法返回训练数据 , 它的标签 , 也是测试数据和标签 。
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
print(x_train.shape, y_train.shape)
本文插图
2、预处理数据
图像数据无法直接输入模型中 , 因此我们需要执行一些操作并处理数据以使其准备好用于神经网络 。 训练数据的维数为(60000,28,28) 。 CNN模型将需要一维 , 因此我们将矩阵重塑为(60000,28,28,1) 。
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
input_shape = (28, 28, 1)
# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
本文插图
3、创建模型
现在 , 我们开始创建CNN模型 。 CNN模型通常由卷积层和池化层组成 。 它对于以网格结构表示的数据更有效 , 这就是CNN能够很好地解决图像分类问题的原因 。 dropout层用于使一些神经元失活 , 在训练时 , 它会降低模型的拟合度 。 然后 , 我们将使用Adadelta优化器来编译模型 。
推荐阅读
- 「」儿童节就送阿尔法蛋学习手表,安全贴心又能学习
- -悟空哥哥-618年中大促力来袭,iQOO Neo3应该是你不容错过的5G手机
- 埃尔法哥哥面对用户需求与AI技术之间的不平衡,AI产品经理该如何做?
- 埃尔法哥哥谁说机器学习难?它在这朵云上就没有门槛
- 埃尔法哥哥Python基础语法之“数据应用”
- 埃尔法哥哥Bionumerics软件的多位点VNTR分析
- 埃尔法哥哥一个例子就能读懂大数据,原来数据分析能在这些行业里使用
- 埃尔法哥哥C++程序员的职业生涯规划
- 埃尔法哥哥MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- 埃尔法哥哥数据规范之代码表
