中国建设教育业协会网站,wordpress注册提示,网页开发平台,怎么用wordpress建立自己的网站吗摘要#xff1a;本文介绍了使用Keras框架在TensorFlow上构建卷积神经网络(CNN)处理MNIST手写数字识别的完整流程。首先加载并预处理数据#xff0c;包括维度调整、归一化和独热编码#xff1b;然后构建包含两个卷积层、池化层、Dropout层和全连接层的序贯模型#xff1b;接…摘要本文介绍了使用Keras框架在TensorFlow上构建卷积神经网络(CNN)处理MNIST手写数字识别的完整流程。首先加载并预处理数据包括维度调整、归一化和独热编码然后构建包含两个卷积层、池化层、Dropout层和全连接层的序贯模型接着使用交叉熵损失和Adam优化器编译模型经过10轮训练后模型在测试集上达到99.1%的准确率。整个过程展示了Keras简化深度学习模型开发的优势包括直观的API设计、灵活的层配置和高效的训练流程。目录TensorFlow——Keras 框架利用 Keras 构建深度学习模型的八大步骤步骤一加载并预处理数据步骤二定义模型架构步骤三编译模型步骤四训练模型术语备注TensorFlow——Keras 框架Keras 是一款轻量易用的高级 Python 库运行在 TensorFlow 框架之上。该库的设计核心是帮助开发者理解深度学习相关技术比如为神经网络搭建网络层同时兼顾维度形态与数学细节的相关概念。Keras 可搭建的模型框架主要分为以下两种类型序贯式 APISequential API函数式 APIFunctional API利用 Keras 构建深度学习模型的八大步骤加载数据对加载的数据进行预处理定义模型结构编译模型训练模型评估模型性能执行所需的预测任务保存模型本文将使用 Jupyter 笔记本完成代码运行与结果输出具体操作步骤如下步骤一加载并预处理数据这是运行深度学习模型的首要步骤先导入相关库和模块再完成数据的加载与预处理。import warnings warnings.filterwarnings(ignore) import numpy as np np.random.seed(123) # 固定随机种子保证实验可复现 from keras.models import Sequential from keras.layers import Flatten, MaxPool2D, Conv2D, Dense, Reshape, Dropout from keras.utils import np_utils # 后端使用TensorFlow from keras.datasets import mnist # 加载已打乱的MNIST手写数字数据集划分为训练集和测试集 (X_train, y_train), (X_test, y_test) mnist.load_data() # 重塑训练集数据维度适配卷积层输入 X_train X_train.reshape(X_train.shape[0], 28, 28, 1) # 重塑测试集数据维度适配卷积层输入 X_test X_test.reshape(X_test.shape[0], 28, 28, 1) # 将数据类型转换为32位浮点型 X_train X_train.astype(float32) X_test X_test.astype(float32) # 数据归一化将像素值缩放到0-1区间 X_train / 255 X_test / 255 # 将标签进行独热编码适配多分类任务 Y_train np_utils.to_categorical(y_train, 10) Y_test np_utils.to_categorical(y_test, 10)步骤二定义模型架构采用序贯式模型搭建卷积神经网络结构model Sequential() # 添加卷积层32个3×3卷积核激活函数为ReLU指定输入维度为28×28×1 model.add(Conv2D(32, 3, 3, activation relu, input_shape (28,28,1))) # 再次添加卷积层提取更深层特征 model.add(Conv2D(32, 3, 3, activation relu)) # 添加最大池化层2×2池化窗口降维并保留关键特征 model.add(MaxPool2D(pool_size (2,2))) # 添加Dropout层随机丢弃25%的神经元防止过拟合 model.add(Dropout(0.25)) # 展平层将多维特征映射为一维连接卷积层与全连接层 model.add(Flatten()) # 全连接层128个神经元激活函数为ReLU model.add(Dense(128, activation relu)) # 再次添加Dropout层随机丢弃50%的神经元进一步防止过拟合 model.add(Dropout(0.5)) # 输出层10个神经元softmax激活函数输出各分类的概率 model.add(Dense(10, activation softmax))步骤三编译模型配置模型的损失函数、优化器和评估指标为训练做准备# 损失函数选用交叉熵损失优化器为Adam评估指标为准确率 model.compile(loss categorical_crossentropy, optimizer adam, metrics [accuracy])步骤四训练模型使用训练集数据对模型进行训练设置训练参数# 批次大小32训练轮数10显示训练过程 model.fit(X_train, Y_train, batch_size 32, epochs 10, verbose 1)训练过程的迭代输出结果如下plaintext第1轮/共10轮 60000/60000 [] - 65s - 损失值0.2124 - 准确率0.9345 第2轮/共10轮 60000/60000 [] - 62s - 损失值0.0893 - 准确率0.9740 第3轮/共10轮 60000/60000 [] - 58s - 损失值0.0665 - 准确率0.9802 第4轮/共10轮 60000/60000 [] - 62s - 损失值0.0571 - 准确率0.9830 第5轮/共10轮 60000/60000 [] - 62s - 损失值0.0474 - 准确率0.9855 第6轮/共10轮 60000/60000 [] - 59s - 损失值0.0416 - 准确率0.9871 第7轮/共10轮 60000/60000 [] - 61s - 损失值0.0380 - 准确率0.9877 第8轮/共10轮 60000/60000 [] - 63s - 损失值0.0333 - 准确率0.9895 第9轮/共10轮 60000/60000 [] - 64s - 损失值0.0325 - 准确率0.9898 第10轮/共10轮 60000/60000 [] - 60s - 损失值0.0284 - 准确率0.9910术语备注Sequential API序贯式 API是 Keras 中最简单的模型构建方式适用于层与层之间依次连接的线性模型Functional API函数式 API更灵活的模型构建方式可搭建多输入、多输出、带残差连接的复杂网络one-hot encoding独热编码将离散型标签转换为二进制向量避免标签间的数值大小干扰模型训练Dropout随机失活深度学习中常用的正则化方法通过随机丢弃部分神经元解决模型过拟合问题Adam一种自适应学习率优化器结合了动量法和 RMSprop 的优点收敛速度快且稳定性好softmax归一化指数函数将神经网络的输出转换为 0-1 之间的概率值且所有类别概率之和为 1适用于多分类任务