>本文详细介绍了使用卷积神经网络(CNN)和MNIST数据集构建用于手写数字识别的KERAS模型。 让我们重新提示它以清晰并改善流程。
>用keras 构建手写数字识别器
>本教程演示了创建一个模型,使用Python的Keras库识别手写数字,这是一种简化建筑和培训神经网络的高级API。我们将利用卷积神经网络(CNN)和广泛使用的MNIST数据集的力量。
理解方法
我们的模型采用CNN,这是一种特别有效的图像分类体系结构。与传统的神经网络不同,CNNS在3D阵列(X,Y坐标和颜色)中处理数据,使其非常适合图像数据。 MNIST数据集包含60,000个培训和10,000个手写数字的测试示例,为培训提供了必要的标签数据。
>人工神经网络(ANN)和CNNS > ANN是一个数学模型,通过隐藏的图层将输入数据转换为输出,每个层代表概率。 培训涉及根据错误调整权重和偏见,从而使网络学习模式。 CNNS为图像处理提供了重要的优势。它们的3D阵列结构意味着每个隐藏层节点仅连接到一个小输入区域,与传统ANN相比,效率大大提高。 关键CNN层包括卷积层(特征提取),合并层(功能降低),变平层(降低维度)和最终分类层。
>
加载培训和测试数据。 可视化样品数字有助于理解数据结构:
mnist.load_data()
from keras.datasets import mnist import matplotlib.pyplot as plt (x_train, y_train), (x_test, y_test) = mnist.load_data() image_index = 35 plt.imshow(x_train[image_index], cmap='Greys') plt.show()
数据预处理
在创建模型之前,数据需要预处理:
-
重塑:图像被重塑为(m x n x 1)格式,使用
.reshape()
>。 。
- 归一化:像素值(0-255)通过除以255将其标准化为0-1。 >
-
一个hot编码:>使用
y_train
>使用y_test
将因变量(to_categorical()
, )转换为二进制类矩阵,以兼容模型的输出。
from keras.datasets import mnist import matplotlib.pyplot as plt (x_train, y_train), (x_test, y_test) = mnist.load_data() image_index = 35 plt.imshow(x_train[image_index], cmap='Greys') plt.show()
型号设计和训练
>我们的CNN模型是依次构建的:
- 卷积层:>从输入图像中提取特征。
- 池层:降低维度和计算成本。
-
辍学层:防止过度拟合。
> - 扁平层:>将多维输出转换为1D阵列。
- 执行最终分类。
img_rows, img_cols = 28, 28 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) / 255 x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) / 255 y_train = to_categorical(y_train, num_classes=10) y_test = to_categorical(y_test, num_classes=10)进行训练,指定时期和批量尺寸。训练有素的模型可保存以供以后使用。
>
sparse_categorical_crossentropy
使用自定义图像进行测试.fit()
from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=(img_rows, img_cols, 1)), Conv2D(64, (3, 3), activation='relu'), MaxPooling2D((2, 2)), Dropout(0.25), Flatten(), Dense(128, activation='relu'), Dropout(0.5), Dense(10, activation='softmax') # 10 output classes (digits 0-9) ])
为了测试模型,我们加载自定义手写数字图像,预处理(转换为灰度,重塑,归一化),加载保存的模型并使用>进行分类。
>
.predict()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(x_train, y_train, batch_size=128, epochs=10, validation_data=(x_test, y_test)) model.save("test_model.h5")
结论
本教程提供了对使用Keras和CNN构建手写数字识别模型的基本理解。 尽管实现高精度(例如,> 99%),但通过模型参数调整,数据增强和探索更高级的CNN体系结构进行了进一步的改进。 提供的常见问题解答提供了对所涉及概念的进一步见解。
以上是KERAS的初学者指南:30分钟内数字识别的详细内容。更多信息请关注PHP中文网其他相关文章!

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

记事本++7.3.1
好用且免费的代码编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境