深度学习:(八)深层神经网络参数与流程
深层神经网络
符号规定
- L L L :表示神经网络的层数;
- l l l :表示第几层;
- n [ l ] n^{[~l~]} n[ l ] :表示第 l l l 层的节点数;
- a [ l ] a^{[~l~]} a[ l ] :表示第 l l l 层中的激活函数(泛指);
- a [ l ] = g [ l ] ( z [ l ] ) a^{[~l~]}=g^{[~l~]}(z^{[~l~]}) a[ l ]=g[ l ](z[ l ]) :表示第 l l l 层中的激活函数(泛指);
- W [ l ] W^{[~l~]} W[ l ] :表示第 l l l 层的参数 w w w 的集合;
- b [ l ] b^{[~l~]} b[ l ] :表示第 l l l 层的参数 b b b 的集合。
前向传播和反向传播都类似之前的笔记。
流程图

前向传播有输入数据 x x x ,反向传播的输入数据是 d a [ L ] da^{[~L~]} da[ L ] ,即输出层(第 L L L 层)的输出,在向量化代码中,直接展示出来的结果是损失函数 L ( y ^ , y ) L(\widehat{y},y) L(y ,y) ,
因为 d a [ L ] = − y a + 1 − y 1 − a da^{[~L~]}=-\frac{y}{a}+\frac{1-y}{1-a} da[ L ]=−ay+1−a1−y ,而 L ( y ^ , y ) L(\widehat{y},y) L(y ,y) 对 y ^ \widehat{y} y ( a a a)的导数,正好等于这个结果。因此将损失函数对 y ^ \widehat{y} y ( a a a)求导,可得出 d a [ L ] da^{[~L~]} da[ L ] ,然后代入反向传播链的输入,开始迭代,如上图所示。
向量化时 d a [ L ] da^{[~L~]} da[ L ] 需改为 d A [ L ] dA^{[~L~]} dA[ L ] , d A [ L ] = ( d a [ 1 ] , d a [ 2 ] , . . . , d a [ m ] ) dA^{[~L~]}=(da^{[~1~]},da^{[~2~]},...,da^{[~m~]}) dA[ L ]=(da[ 1 ],da[ 2 ],...,da[ m ]) 。
为何 z [ l ] z^{[~l~]} z[ l ]是反向传播的一个输入参数
∵ a [ l ] = σ ( z [ l ] ) = σ ( W [ l ] a [ l − 1 ] + b [ l ] ) ∵ d L d a [ l − 1 ] = d L d a [ l ] ⋅ d a [ l ] d a [ l − 1 ] = d a [ l ] ⋅ σ ′ ( W [ l ] a [ l − 1 ] + b [ l ] ) W [ l ] ⋅ d a [ l − 1 ] ∴ d a [ l − 1 ] = d a [ l ] ⋅ σ ′ ( z [ l ] ) W [ l ] ⋅ d a [ l − 1 ] \begin{align*} ∵a^{[~l~]}=\sigma&(z^{[~l~]})=\sigma(W^{[~l~]}a^{[~l-1~]}+b^{[~l~]})\\ ∵\frac{dL}{da^{[~l-1~]}}&=\frac{dL}{da^{[~l~]}}·\frac{da^{[~l~]}}{da^{[~l-1~]}}\\ &=da^{[~l~]}·\sigma^{'}(W^{[~l~]}a^{[~l-1~]}+b^{[~l~]})W^{[~l~]}·da^{[~l-1~]}\\ ∴da^{[~l-1~]}&=da^{[~l~]}·\sigma^{'}(z^{[~l~]})W^{[~l~]}·da^{[~l-1~]} \end{align*} ∵a[ l ]=σ∵da[ l−1 ]dL∴da[ l−1 ](z[ l ])=σ(W[ l ]a[ l−1 ]+b[ l ])=da[ l ]dL⋅da[ l−1 ]da[ l ]=da[ l ]⋅σ′(W[ l ]a[ l−1 ]+b[ l ])W[ l ]⋅da[ l−1 ]=da[ l ]⋅σ′(z[ l ])W[ l ]⋅da[ l−1 ]
核对矩阵的维度
向量化前的单个样本
-
前向传播:
W [ l ] W^{[~l~]} W[ l ] :维度为 ( n [ l ] , n [ l − 1 ] ) (n^{[~l~]},n^{[~l-1~]}) (n[ l ],n[ l−1 ]) ;
z [ l ] z^{[~l~]} z[ l ] :维度为 ( n [ l ] , 1 ) (n^{[~l~]},1) (n[ l ],1) ;
a [ l ] a^{[~l~]} a[ l ] :维度为 ( n [ l ] , 1 ) (n^{[~l~]},1) (n[ l ],1) ;
b [ l ] b^{[~l~]} b[ l ] :维度为 ( n [ l ] , 1 ) (n^{[~l~]},1) (n[ l ],1) 。
-
反向传播:
d W [ l ] dW^{[~l~]} dW[ l ] 和 W [ l ] W^{[~l~]} W[ l ] 同维度;
d b [ l ] db^{[~l~]} db[ l ] 和 b [ l ] b^{[~l~]} b[ l ] 同维度。
向量化后的整个训练集
-
前向传播:
X ( A [ 0 ] ) X(A^{[~0~]}) X(A[ 0 ]) :维度为 ( n [ 0 ] , m ) (n^{[~0~]},m) (n[ 0 ],m) ;
W [ l ] W^{[~l~]} W[ l ] :维度为 ( n [ l ] , n [ l − 1 ] ) (n^{[~l~]},n^{[~l-1~]}) (n[ l ],n[ l−1 ]) ;
b [ l ] b^{[~l~]} b[ l ] :维度为 ( n [ l ] , 1 ) (n^{[~l~]},1) (n[ l ],1) ;# 要广播
Z [ l ] Z^{[~l~]} Z[ l ] :维度为 ( n [ l ] , m ) (n^{[~l~]},m) (n[ l ],m) ;
A [ l ] A^{[~l~]} A[ l ] :维度为 ( n [ l ] , m ) (n^{[~l~]},m) (n[ l ],m) 。
-
反向传播:
d W [ l ] dW^{[~l~]} dW[ l ] 和 W [ l ] W^{[~l~]} W[ l ] 同维度;
d b [ l ] db^{[~l~]} db[ l ] 和 b [ l ] b^{[~l~]} b[ l ] 同维度;
d Z [ l ] dZ^{[~l~]} dZ[ l ] 和 Z [ l ] Z^{[~l~]} Z[ l ] 同维度;
d A [ l ] dA^{[~l~]} dA[ l ] 和 A [ l ] A^{[~l~]} A[ l ] 同维度。
超参数:
能控制参数 w w w 和 b b b 的参数,需人为设置。
- 学习率 α \alpha α ;
- 梯度下降法循环次数;
- 隐层数 L L L ;
- 隐藏层的单元(节点)数;
- 激活函数类型。
这些参数需要不断测试,实时评估损失函数(横坐标越大,纵坐标越小)。
相关文章:
深度学习:(八)深层神经网络参数与流程
深层神经网络 符号规定 L L L :表示神经网络的层数; l l l :表示第几层; n [ l ] n^{[~l~]} n[ l ] :表示第 l l l 层的节点数; a [ l ] a^{[~l~]} a[ l ] :表示第 l l l 层中的激活函数&…...
`pattern = r“(\d+)(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence)“
pattern r"(\d)(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence)" 是一个正则表达式,用于匹配特定格式的字符串。 正则表达式解析 整体结构: r"...":前缀 r 表示这是一个原始字符串(Raw String&#x…...
宝塔面板部署雷池社区版教程
宝塔面板部署雷池社区版教程 简单介绍一下宝塔面板,安全高效的服务器运维面板,使用宝塔面板的人非常多 在网站管理上,许多用户都是通过宝塔面板进行管理,宝塔面板的Nginx默认监听端口为80和443,这就导致共存部署时雷池…...
【击败100%】258. 各位相加
首次出现,代码用时击败了100%的用户,开心~ 题目 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为: 38 --> 3 8 -->…...
【alist】宝塔面板docker里的alist默认admin无法登录
宝塔docker安装完alist,根据页面的提示账号密码死活登录不上,提示密码有问题 页面提示: 数据存储目录 /www/dk_project/dk_app/dk_alist 使用说明请参考: >使用教程 默认账号密码(admin/admin) 首次登录后点击个人…...
【击败100%】1281. 整数的各位积和之差
击败了100%的用户,开心~ 题目 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1: 输入:n 234 输出:15 解释: 各位数之积 2 * 3 * 4 24 各位数之和 2 3 4 …...
Flink基本概念和算子使用
基础概念 Flink是一个框架和分布式处理引擎,用于对无界数据流和有界数据流进行有状态计算,它的核心目标是“数据流上的有状态计算”。 有界流和无界流 有界流:具有明确的开始和结束时间,数据量有限。适合使用批处理技术…...
Kafka 3.0.0集群部署教程
1、集群规划 主机名 ip地址 node.id process.roles kafka1 192.168.0.29 1 broker,controller Kafka2 192.168.0.30 2 broker,controller Kafka3 192.168.0.31 3 broker,controller 2、将kafka包上传以上节点/app目录下 mkdir /app 3、解压kafka包 所有节点 …...
昇思MindSpore进阶教程-格式转换
大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 MindSpore中可以把用于训练网络模型的数据…...
搜索软件 Everything 的安装与使用教程
一、Everything简介 适用于 Windows 的免费搜索工具 Everything 是 Windows 的即时搜索引擎。发现、整理并轻松访问文件和文件夹,一切尽在指尖! PS:Everything无法对文件内容进行搜索,只能根据文件名和路径进行搜索 二、Everyt…...
oracle 如何判断当前时间在27号到当月月底
在Oracle中,您可以使用TRUNC和LAST_DAY函数来判断当前时间是否在27号到当月月底之间。以下是一个SQL示例: SELECT CASE WHEN TRUNC(SYSDATE) > TRUNC(SYSDATE, DD) 26 AND TRUNC(SYSDATE) < LAST_DAY(SYSDATE) THEN 当前时间在27号到当月月底之间…...
Django 配置邮箱服务,实现发送信息到指定邮箱
一、这里以qq邮箱为例,打开qq邮箱的SMTP服务 二、django项目目录设置setting.py 文件 setting.py 添加如下内容: # 发送邮件相关配置 EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend EMAIL_USE_TLS True EMAIL_HOST smtp.qq.com EMAIL…...
Git使用手册
1、初识Git 概述:Git 是一个开源的分布式版本控制系统,可以有效、高速地处理项目版本管理。 知识点补充: 版本控制:一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 分布式:每个人…...
sql-labs靶场
第一关(get传参,单引号闭合,有回显,无过滤) ?id-1 union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schemasecurity) -- 第二关(get传参,无闭…...
【Redis入门到精通二】Redis核心数据类型(String,Hash)详解
目录 Redis数据类型 1.String类型 (1)常见命令 (2)内部编码 2.Hash类型 (1)常见命令 (2)内部编码 Redis数据类型 查阅Redis官方文档可知,Redis提供给用户的核心数据…...
如何快速免费搭建自己的Docker私有镜像源来解决Docker无法拉取镜像的问题(搭建私有镜像源解决群晖Docker获取注册表失败的问题)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Docker无法拉取镜像 📒📒 解决方案 📒🔖 方法一:免费快速搭建自己的Docker镜像源🎈 部署🎈 使用🔖 备用方案⚓️ 相关链接 🚓️📖 介绍 📖 在当前的网络环境下,Docker镜像的拉取问题屡见不鲜(各类Nas查询…...
QT 获取视频帧Opencv获取清晰度
先展示结果: 1.获取摄像头的分辨率 mResSize.clear();mResSize camera_->supportedViewfinderResolutions();ui->comboBox_resulation->clear();int i0;foreach (QSize msize, mResSize) {qDebug()<<msize;ui->comboBox_resulation->addItem(…...
生成式AI如何辅助医药行业智能营销
生成式AI在医药行业的智能营销中发挥着日益重要的作用,它通过多种方式辅助医药企业提升市场洞察能力、优化营销策略、增强客户互动和体验,从而推动销售增长和品牌价值的提升。以下是生成式AI如何辅助医药行业智能营销的具体方式:一、精准市场…...
演示:基于WPF的DrawingVisual开发的Chart图表和表格绘制
一、目的:基于WPF的DrawingVisual开发的Chart图表和表格绘制 二、预览 钻井井轨迹表格数据演示示例(应用Table布局,模拟井轨迹深度的绘制) 饼图表格数据演示示例(应用Table布局,模拟多个饼状图组合显示&am…...
汽车保养BBBBBBBBBBB
小保养就是机油和机滤,4s店比较贵,可以在京东上买机油,可以包安装 极护、磁护 两款机油配方不同,极护系列机油注入液钛配方,拥有特别的油膜自适应能力,在各种形式条件下均能有效减少金属间的直接接触&…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
