首页 > 科技周边 > IT业界 > KERAS的初学者指南:30分钟内数字识别

KERAS的初学者指南:30分钟内数字识别

Joseph Gordon-Levitt
发布: 2025-02-10 15:27:16
原创
296 人浏览过

>本文详细介绍了使用卷积神经网络(CNN)和MNIST数据集构建用于手写数字识别的KERAS模型。 让我们重新提示它以清晰并改善流程。

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

>用keras 构建手写数字识别器

>本教程演示了创建一个模型,使用Python的Keras库识别手写数字,这是一种简化建筑和培训神经网络的高级API。我们将利用卷积神经网络(CNN)和广泛使用的MNIST数据集的力量。

理解方法

我们的模型采用CNN,这是一种特别有效的图像分类体系结构。与传统的神经网络不同,CNNS在3D阵列(X,Y坐标和颜色)中处理数据,使其非常适合图像数据。 MNIST数据集包含60,000个培训和10,000个手写数字的测试示例,为培训提供了必要的标签数据。

>人工神经网络(ANN)和CNNS > ANN是一个数学模型,通过隐藏的图层将输入数据转换为输出,每个层代表概率。 培训涉及根据错误调整权重和偏见,从而使网络学习模式。 CNNS为图像处理提供了重要的优势。它们的3D阵列结构意味着每个隐藏层节点仅连接到一个小输入区域,与传统ANN相比,效率大大提高。 关键CNN层包括卷积层(特征提取),合并层(功能降低),变平层(降低维度)和最终分类层。

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

与MNIST数据集一起

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes >

> MNIST数据集可在Keras中可用。 我们使用

加载培训和测试数据。 可视化样品数字有助于理解数据结构:

mnist.load_data()

训练和测试集的尺寸(60000、28、28)和(10000、28、28),指示28x28像素图像。
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()
登录后复制
登录后复制

数据预处理A Beginner's Guide to Keras: Digit Recognition in 30 Minutes

在创建模型之前,数据需要预处理:

  1. 重塑:图像被重塑为(m x n x 1)格式,使用.reshape()>。
  2. 归一化:像素值(0-255)通过除以255将其标准化为0-1。
  3. >
  4. 一个hot编码:>使用y_train>使用y_test将因变量(to_categorical()
  5. )转换为二进制类矩阵,以兼容模型的输出。
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模型是依次构建的:

  1. 卷积层:>从输入图像中提取特征。
  2. 池层:降低维度和计算成本。
  3. 辍学层:防止过度拟合。>
  4. 扁平层:>将多维输出转换为1D阵列。
  5. 密集层:
  6. 执行最终分类。
  7. >使用
损失(用于整数标签),Adam Optimizer和准确度作为度量标准进行编译。 使用
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")
登录后复制

A Beginner's Guide to Keras: Digit Recognition in 30 Minutes 结论

本教程提供了对使用Keras和CNN构建手写数字识别模型的基本理解。 尽管实现高精度(例如,> 99%),但通过模型参数调整,数据增强和探索更高级的CNN体​​系结构进行了进一步的改进。 提供的常见问题解答提供了对所涉及概念的进一步见解。

以上是KERAS的初学者指南:30分钟内数字识别的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板