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

【Keras学习笔记】手写识别

新建模型

1、model = keras.Sequential()

创建了一个 Keras ​顺序模型(Sequential Model)

2、model.add(layers.Flatten())

这行代码向 model 中添加了一个 ​Flatten(扁平化)层

为什么需要这一层?

本例的训练参数是2828像素的手写图片,但是Dense的输入是一维的,所以我们需要这一层将2828像素的手写图片转化为784维向量(一维数组),再输入到下一层

3、model.add(layers.Dense(64, activation=‘relu’))

这行代码向 model 中添加了一个 ​Dense(全连接)层。
Rectified Linear Unit这是目前最常用的激活函数,尤其是隐藏层。

为什么上一层输出784个参数,这一层的输入是64?

其实是一个理解误区,可以举例来解释:

假设输入一张图,Flatten后变成784个数字组成的购物清单,Dense层有64个收银员,每个收银员都要检查全部784件商品(乘以不同权重),最后给出一个是否需要补货的评分(激活值)。

64个神经元最终训练结果不会得到相同或者类似的w和b吗?

64个神经元 ​几乎不可能​ 训练出完全相同的w和b

为什么最终训练结果不会得到相同或者类似的w和b?
  • 训练开始前,每个神经元的权重向量 w和偏置 b 都是独立地、随机初始化的
  • 随机梯度下降的本质,比喻:盲人摸象式下山法,每次随机摸一块石头(一个样本),仅凭这块石头的倾斜方向就迈一步。虽然每次方向可能不准,但长期统计来看,你摸的石头够多、方向平均后仍是“下山”的大趋势
relu 是怎么样的一个函数

ReLU的函数规则只有一句:​​“正数放行,负数归零”​。
数学公式:f(x) = max(0, x)
​输入 x > 0 时​:输出 = x(原样通过)
​输入 x ≤ 0 时​:输出 = 0(直接关闭)

ReLU激活函数并不直接处理784个参数本身,而是作用于神经网络层中每个神经元的输入值​(即线性变换后的结果)

4、model.add(layers.Dense(10, activation=‘softmax’))

每个神经元代表一个输出类别(Class)​。数字 10 对应注释和 MNIST 中的 10 个类别(数字 0-9)。
Softmax 激活函数:​​ 这是多分类(Multi-class classification)​​ 任务输出层的标准选择。它作用在整个层输出的 10 个值上。

未完

http://www.xdnf.cn/news/1241839.html

相关文章:

  • C++-异常
  • Linux84 SHELL编程:流程控制 前瞻(1)
  • 贯穿全生命周期,生成式AI正在重塑游戏行业
  • Coze Loop:开源智能体自动化流程编排平台原理与实践
  • k8s集群
  • 案件线索展示与交付项目
  • 数据结构:如何判断一个链表中是否存在环(Check for LOOP in Linked List)
  • 深度学习图像处理篇之AlexNet模型详解
  • 【PHP】对比两张图片的相似度
  • WPF 按钮背景色渐变
  • 服务器的Mysql 集群技术
  • linux下docker安装ollama
  • Petalinux快捷下载
  • 部署 Kibana 8.2.2 可视化管理 Elasticsearch 8.2.2 集群
  • RabbitMQ--介绍
  • 【深度学习新浪潮】近三年零样本图像分类研发进展调研
  • 文件与目录操作命令
  • MySQL 基本操作入门指南
  • Apache IoTDB(3):时序数据库 IoTDB Docker部署实战
  • [GYCTF2020]FlaskApp
  • Nginx vs Spring Cloud Gateway:限流功能深度对比与实践指南
  • 直角坐标系里的四象限对NLP中的深层语义分析的积极影响和启示
  • spring boot开发中的资源处理等问题
  • 怎样推动AI技术在人机协同中的发展?
  • RTSP/RTMP播放器超低延迟实战:无人机远控视觉链路的工程实践
  • vue3+vue-flow制作简单可拖拽可增删改流程图
  • Qt 自动无法加载数据库为空
  • Go语言select
  • 开源的现代数据探索和可视化平台:Apache Superset 使用 Docker Compose
  • 笔记本电脑联想T14重启后无法识别外置红米屏幕