当前位置: 首页 > news >正文

Tensorflow实现手写数字识别

模型架构

  • 具有10个神经元,对应10个类别(0-9的数字)。
  • 使用softmax激活函数,对多分类问题进行概率归一化。
  • 输出层 (Dense):
  • 具有64个神经元。
  • 激活函数为ReLU。
  • 全连接层 (Dense):
  • 将二维数据展平成一维,为全连接层做准备。
  • 展平层 (Flatten):
  • 第三层卷积层有64个过滤器。
  • 使用3x3的卷积核。
  • 激活函数为ReLU。
  • 卷积层 (Conv2D):
  • 池化大小为2x2。
  • 最大池化层 (MaxPooling2D):
  • 第二层卷积层有64个过滤器。
  • 使用3x3的卷积核。
  • 激活函数为ReLU。
  • 卷积层 (Conv2D):
  • 池化大小为2x2。
  • 通过池化操作减小特征图的尺寸,同时保留最重要的信息。
  • 最大池化层 (MaxPooling2D):
  • 第一层卷积层有32个过滤器(filters)。
  • 使用3x3的卷积核。
  • 激活函数为ReLU。
  • 输入形状为28x28的单通道图像(黑白图像)。
  • 卷积层 (Conv2D):
import tensorflow as tffrom tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist# 载入 MNIST 数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()# 数据预处理
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)# 构建神经网络模型
model = models.Sequential([# 第一层:卷积层layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),# 第二层:最大池化层layers.MaxPooling2D((2, 2)),# 第三层:卷积层layers.Conv2D(64, (3, 3), activation='relu'),# 第四层:最大池化层layers.MaxPooling2D((2, 2)),# 第五层:卷积层layers.Conv2D(64, (3, 3), activation='relu'),# 将二维数据展平成一维layers.Flatten(),# 第六层:全连接层(密集层),64个神经元,ReLU激活函数layers.Dense(64, activation='relu'),# 输出层:全连接层,10个神经元(对应10个类别,0-9的数字),使用softmax激活函数layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_split=0.2)# 在测试集上评估模型
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f'Test accuracy: {test_acc}')

 编译模型:

model.compile( optimizer,    # 优化器,用于配置模型的学习过程。常见的有 'adam'、'sgd' 等。loss,         # 损失函数,用于衡量模型在训练时的性能。常见的有 'categorical_crossentropy'、'mse' 等。 metrics=None  # 评估指标,用于监控训练和测试性能。可以是一个字符串或字符串列表。例如,'accuracy'。)

optimizer(优化器):

优化器决定了模型如何进行参数更新,以最小化损失函数。常见的优化器包括 'adam'、'sgd'、'rmsprop' 等。不同的优化器可能适用于不同类型的问题。

loss(损失函数):

损失函数用于衡量模型在训练时的性能,即模型预测与实际标签之间的差异。对于不同的问题,需要选择合适的损失函数。例如,对于分类问题,常见的是 'categorical_crossentropy',而对于回归问题,可能是 'mse'(均方误差)。

metrics(评估指标):

评估指标用于监控模型的性能。在训练和测试过程中,会输出这些指标的值。例如,'accuracy' 表示模型的准确性。你可以传递一个字符串或一个字符串列表,以同时监控多个指标。

 

http://www.lryc.cn/news/313291.html

相关文章:

  • 谈谈杭州某小公司面试的经历
  • 如何使用WinSCP结合Cpolar实现公网远程访问内网Linux服务器
  • 6. 互质
  • 微信小程序(五十一)页面背景(全屏)
  • MATLAB | MATLAB版玫瑰祝伟大女性节日快乐!!
  • LVS+Keepalived 高可用集群
  • Linux:kubernetes(k8s)探针ReadinessProbe的使用(9)
  • 专题一 - 双指针 - leetcode 1089. 复写零 - 简单难度
  • 深入浅出(二)MVVM
  • 2023年第三届中国高校大数据挑战赛(第二场)A题思路
  • 数据挖掘:
  • NDK,Jni
  • Java实战:Spring Boot整合Canal与RabbitMQ实时监听数据库变更并高效处理
  • 机器学习:探索计算机的自我进化之路
  • 【Flink网络数据传输(4)】RecordWriter(下)封装数据并发送到网络的过程
  • 【牛客】VL74 异步复位同步释放
  • CSS3笔记
  • 两天学会微服务网关Gateway-Gateway工作原理
  • 备忘 clang diagnostic 类的应用示例 ubuntu 22.04
  • Git小册-笔记迁移
  • 【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 传统布局和Web标准布局的区别
  • 005-事件捕获、冒泡事件委托
  • SpringBoot快速入门(介绍,创建的3种方式,Web分析)
  • VMwareWorkstation17.0虚拟机搭建WindowsME虚拟机(完整安装步骤详细图文教程)
  • 【Java设计模式】八、装饰者模式
  • python INI文件操作与configparser内置库
  • 软考笔记--软件系统质量属性
  • 新型设备巡检方案-手机云巡检
  • node.js 下 mysql2 的 CURD 功能极简封装
  • Cloud-Eureka服务治理-Ribbon负载均衡