6月13日day52打卡

神经网络调参指南

知识点回顾:

  1. 随机种子
  2. 内参的初始化
  3. 神经网络调参指南
    1. 参数的分类
    2. 调参的顺序
    3. 各部分参数的调整心得

作业:对于day'41的简单cnn,看看是否可以借助调参指南进一步提高精度。

用“烧水调温”的日常场景来打比方:

每个神经元就像一个“烧水的炉子”,你的目标是把水烧到合适的温度(比如80℃)。

  • 输入数据是“初始水温”(比如水管里流进来的水是20℃);
  • 权重(w)是“炉子的初始火力”(比如你第一次开炉子时调的火力大小);
  • 激活函数(比如sigmoid)是“水温上升的规律”——它规定了“火力大小”和“最终水温”的关系。

为什么初始火力不能开太大?(对应sigmoid的饱和区)

sigmoid这个“水温规律”有个特点:

  • 当“实际加热量”(x = w·初始水温 + 基础加热)比较小时(比如在20-80℃之间),水温对火力变化非常敏感——你稍微调大一点火力,水温就明显上升(对应导数大,梯度大)。这时候你能快速调整火力,让水温接近目标(权重容易更新)。
  • 但如果初始火力(w)开得太大,第一次加热时“实际加热量”就会猛增(比如直接烧到95℃),这时候水温进入“饱和区”——不管你怎么调火力(调大或调小),水温上升的速度都几乎不变(对应导数接近0,梯度消失)。就像水已经快烧开了,你再加大火力,水也不会更快变热,这时候你根本没法通过调火力来精准控制水温(权重无法更新)。

深层网络的“串联烧水”问题

深层网络就像多个炉子排着队烧水:第一个炉子烧完的水传给第二个,第二个传给第三个……如果第一个炉子的火力开太大,水烧到95℃后传给第二个炉子,第二个炉子即使调火力,水最多只能烧到98℃(变化很小);传到第三个炉子时,水温几乎不再变化……最终,第一个炉子的火力(底层参数)根本没法调整——因为后面的炉子根本“感受不到”它的变化(梯度消失)。

总结

初始火力调小(比如在“小火”档位),就像让水一开始在“敏感升温区”(20-80℃)。这时候你调火力(更新权重)能明显改变水温(梯度大),所有串联的炉子(深层网络)都能有效传递温度变化,最终让整排炉子的水温(模型输出)精准达到目标(模型收敛)。

 

 

 简单cnn 借助调参指南进一步提高精度

基础CNN模型代码

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical# 加载数据
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()# 数据预处理
train_images = train_images.astype('float32') / 255
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)# 基础CNN模型
model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.Flatten(),layers.Dense(64, activation='relu'),layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])history = model.fit(train_images, train_labels, epochs=10, batch_size=64,validation_data=(test_images, test_labels))

改进方法

增加模型复杂度
model = models.Sequential([layers.Conv2D(64, (3, 3), activation='relu', input_shape=(32, 32, 3), padding='same'),layers.BatchNormalization(),layers.Conv2D(64, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.MaxPooling2D((2, 2)),layers.Dropout(0.25),layers.Conv2D(128, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.Conv2D(128, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.MaxPooling2D((2, 2)),layers.Dropout(0.25),layers.Conv2D(256, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.Conv2D(256, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.MaxPooling2D((2, 2)),layers.Dropout(0.25),layers.Flatten(),layers.Dense(512, activation='relu'),layers.BatchNormalization(),layers.Dropout(0.5),layers.Dense(10, activation='softmax')
])
优化器调参
from tensorflow.keras.optimizers import Adamoptimizer = Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07)
model.compile(optimizer=optimizer,loss='categorical_crossentropy',metrics=['accuracy'])
数据增强
from tensorflow.keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(rotation_range=15,width_shift_range=0.1,height_shift_range=0.1,horizontal_flip=True,zoom_range=0.1
)
datagen.fit(train_images)history = model.fit(datagen.flow(train_images, train_labels, batch_size=64),epochs=50,validation_data=(test_images, test_labels))
早停和模型检查点
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpointcallbacks = [EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True),ModelCheckpoint('best_model.h5', monitor='val_accuracy', save_best_only=True)
]history = model.fit(..., callbacks=callbacks, epochs=100)

 @浙大疏锦行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

穿越时空的刀剑之旅:走进VR刀剑博物馆​

VR 刀剑博物馆不仅仅是一个展示刀剑的场所,更是文化传承与教育的重要基地,在弘扬刀剑文化、增强民族文化认同感以及开展教育活动等方面发挥着不可替代的重要作用。​ 从文化传承的角度来看,刀剑文化源远流长,它承载着不同国家、不…

基于GA遗传优化的PID控制器最优控制参数整定matlab仿真

PID(比例-积分-微分)控制器是工业控制领域中最常用的控制器之一。通过调节PID控制器的三个参数:比例(Kp)、积分(Ki)和微分(Kd),可以实现系统的稳定控制。然而…

华为OD最新机试真题-上班之路-OD统一考试(B卷)

题目描述 Jungle 生活在美丽的蓝鲸城,大马路都是方方正正,但是每天马路的封闭情况都不一样。地图由以下元素组成: .—空地,可以达到 *—路障,不可达到; S—Jungle的家。 T—公司;

大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点

在数字化向智能化跃迁的时代浪潮中,大模型技术正驱动企业数据分析模式迎来颠覆性变革。传统自助式BI工具主导的数据分析模式,虽在降低分析门槛、提升报表开发效率层面发挥了一定作用,但随着数据应用场景的深化,其指标固化、响应滞…

(Note)基于Pytorch手搓RNN参考

Coding a Recurrent Neural Network (RNN) from scratch using PytorchPyTorch RNN from Scratch - Jake Taelearning pytorch 3: coding an RNN, GRU, LSTM | Kaggle

《网络安全与防护》知识点复习

✅ 一、网络安全基础(CIA / AAA / 安全服务) 概念快速记忆CIA 三元组机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)安全服务(OSI)鉴别…

编译,多面体库

1) barvinok是一个用于计算整数点数的库 在参数和非参数多面体以及投影中 这样的集合。 对于参数多面体,计数由以下任一表示 显式函数或生成函数。 第一种是分段阶跃多项式的形式。 这是Ehrhart拟多项式的推广 以及向量分割函数。 第二个是Ehrhart级数的…

Kotlin基础语法一

语言声明变量与内置数据类型 var:数据可变 val: 数据不可变 内置数据类型 String 字符串 Char 单字符 Boolean true/false Int 整形 Double 小数 List 集合 Set 无重复的元素集合 Map 键值对的集合 Kotlin语言的类型推断 val info : String "Hello KT&quo…

无人机避障——感知篇(在Ubuntu20.04的Orin nx上基于ZED2实现Vins Fusion)

设备:Jetson Orin nx 系统:Ubuntu 20.04 双目视觉:zed 2 结果展示: 官网中的rosdep install --from-paths src --ignore-src -r -y如果连不上,可以用小鱼rosdepc进行替换: 安装标定工具: 1、…

从零构建端到端AI天气预测系统:不依赖第三方API的实践指南

引言:自主可控的AI气象解决方案 在当今数据隐私和系统自主性日益重要的背景下,本文将详细介绍如何完全不依赖任何第三方API,从数据采集到模型部署,构建一个完整的本地化AI天气预测系统。这个方案特别适合对数据主权有要求的企业或…

扣子数据库实战案例:搭建AI登记助手

《扣子开发AI Agent智能体应用(人工智能技术丛书)》(宋立桓,王东健,陈铭毅,程东升)【摘要 书评 试读】- 京东图书 在当今的数字化生活场景中,无论是拜访公司还是进入小区,登记信息似乎已经成为…

STA(Station)模式与AP(Access Point)模式

以下是STA(Station)模式与AP(Access Point)模式的核心区别对比表,综合各搜索结果的关键信息整理: 对比维度‌STA模式‌‌AP模式‌角色定位‌无线终端(客户端)无线接入点&#xff08…

【prometheus+Grafana篇】基于Prometheus+Grafana实现postgreSQL数据库的监控与可视化

💫《博主主页》: 🔎 CSDN主页__奈斯DB 🔎 IF Club社区主页__奈斯、 🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、N…

什么是探索式测试,应该怎么做?

探索式测试(Exploratory Testing)是一种强调“测试设计与执行同步进行”的软件测试方法,它将测试人员的知识、经验、直觉与系统探索相结合,在动态执行中灵活设计用例并发现缺陷。与传统的基于文档的测试(如预先设计好详…

使用 ollama 在 mac 本地部署一个 qwen3:8b 模型

前言 ollama 就是一个运行大模型的框架。要运行大模型,还需要大模型本身。 下载安装 ollama 从 ollama 官网 下载mac 版本的 ollama。 启动 ollama 安装好选择启动即可,如果没有选择启动,可以使用命令启动。 ollama serve使用 ollama 运…

13.18 Ollama+LLaMA3企业级部署实战:6步打造私有化大模型高效引擎

Ollama+LLaMA3企业级部署实战:6步打造私有化大模型高效引擎 # LanguageMentor 技术方案:大模型选型与 Ollama 私有化部署 **关键词**:Ollama 部署实践, LLaMA 3 微调, 本地化模型管理, 大模型选型策略, 私有化 Agent 架构 ---## 1. 技术选型背后的深度思考 ### 1.1 为…

经济系统的「资源死锁」与「架构重构」:从通缩陷阱到可持续模型设计

经济系统的「资源死锁」与「架构重构」:从通缩陷阱到可持续模型设计 关键词:货币泄漏 财富分配算法 预期管理 反脆弱架构 一、系统故障诊断:当经济陷入「资源死锁」 1.1 内存泄漏式资源浪费 低效投资冗余:重复性建设如同未释放的内存指针,持续占用资源却无实际产出(m…

脱离 Kubernetes,基于原生 Spring Cloud + 云 API 的轻量级自管理微服务平台架构设计

在微服务架构日趋成熟的今天,Kubernetes(K8s)已成为事实上的容器编排标准。然而,对于中小团队或资源受限的企业来说,K8s 的引入成本、运维复杂度与学习曲线并不总是值得。 作为替代方案,基于 Spring Cloud…

【iSAQB软件架构】复杂系统架构描述的推荐实践

概述 无论架构是明确形成还是隐性形成,如果没有被记录下来,其作用都是有限的。只有经过适当记录的架构才能持续地被交流、讨论和进一步发展。 软件架构不仅要与其他架构师讨论。软件架构的所有方面都要向不同利益代表(利益相关者&#xff0…

python中的面向对象:继承、封装、多态

# 导入 ABC 是指的引入抽象父类(Abstract Base Class - 本质是抽象方法装饰器) from abc import ABC, abstractmethodclass Food(object):# 构造方法def __init__(self, name):self.name name# Food子类 class Bone(Food):def __init__(self):super()._…