深度学习:(五)初识神经网络

(一)神经网络的层数

除去输入层,但包括输出层,每一层都有自己的参数。

输入层称为第零层。

(二)最简单的神经网络(逻辑回归)

下图中的小圆圈,代表了一种运算。且一个小圆圈表示一个节点。

在这里插入图片描述

(三)进阶神经网络(双层,多节点)

为了统一和美观,作如下规定:

  • 层数用上标 [ l ] [~l~] [ l ] 表示。
  • 层中的节点用脚标 i i i 表示。
  • 层的输出用 a a a 表示。

则有 a i [ l ] a_i^{[~l~]} ai[ l ] 表示第 l l l 层的第 i i i 个节点的输出值(激活值)。

有以下双层神经网络:

在这里插入图片描述

注解:

  • “隐藏层”的含义是:在训练集中,这些中间节点的真正数值,我们并不知道。
  • 对于隐藏层1:
    • 每个节点都有不同的参数 w w w b b b
    • 输入为向量 x x x
    • 执行 z = w T x + b z=w^Tx+b z=wTx+b a = σ ( z ) a=\sigma(z) a=σ(z) 两个计算步骤。
  • 对于输出层:
    • 也有对应的参数 w w w b b b
    • 输入为隐藏层 1 1 1 的输出值;
    • 执行 z = w T x + b z=w^Tx+b z=wTx+b a = σ ( z ) a=\sigma(z) a=σ(z) 两个计算步骤。

参数矩阵:

  • 第一层(隐藏层1):

    • w 1 [ 1 ] T , w 2 [ 1 ] T , w 3 [ 1 ] T , w 4 [ 1 ] T w_1^{[1]T},w_2^{[1]T},w_3^{[1]T},w_4^{[1]T} w1[1]T,w2[1]T,w3[1]T,w4[1]T 组成了矩阵 W [ 1 ] W^{[1]} W[1] ,即 W [ 1 ] = [ — w 1 [ 1 ] T — — w 2 [ 1 ] T — — w 3 [ 1 ] T — — w 4 [ 1 ] T — ] W^{[1]}=\left[ \begin{matrix} — & w_1^{[1]T} & —\\ — & w_2^{[1]T} & — \\ — & w_3^{[1]T} & — \\ — & w_4^{[1]T} & — \\ \end{matrix} \right] W[1]= w1[1]Tw2[1]Tw3[1]Tw4[1]T ,维度为 4 × 3 4×3 4×3 ,表示 4 4 4 个节点, 3 3 3 个输入特征。
    • b 1 [ 1 ] , b 2 [ 1 ] , b 3 [ 1 ] , b 4 [ 1 ] b_1^{[1]},b_2^{[1]},b_3^{[1]},b_4^{[1]} b1[1],b2[1],b3[1],b4[1] 组成了列向量 b [ 1 ] b^{[1]} b[1] ,即 b [ 1 ] = [ b 1 [ 1 ] b 2 [ 1 ] b 3 [ 1 ] b 4 [ 1 ] ] b^{[1]}=\left[ \begin{matrix} b_1^{[1]}\\ b_2^{[1]}\\ b_3^{[1]}\\ b_4^{[1]}\\ \end{matrix} \right] b[1]= b1[1]b2[1]b3[1]b4[1] ,维度为 4 × 1 4×1 4×1
  • 第二层(输出层):

    • w 1 [ 2 ] T w_1^{[2]T} w1[2]T 组成了矩阵 W [ 2 ] W^{[2]} W[2] ,即 W [ 2 ] = [ — w 1 [ 2 ] T — ] W^{[2]}=\left[ \begin{matrix} — & w_1^{[2]T} & —\\ \end{matrix} \right] W[2]=[w1[2]T] ,维度为 1 × 4 1×4 1×4 ,表示 1 1 1 个节点, 4 4 4 个输入特征(!!!!)。
    • b 1 [ 2 ] b_1^{[2]} b1[2] 组成了 b [ 2 ] b^{[2]} b[2] (常数),维度为 1 × 1 1×1 1×1

a i [ l ] a_i^{[~l~]} ai[ l ] 表示每层的输出:

在这里插入图片描述

整体计算流程:

在这里插入图片描述

(四)向量化神经网络

单个训练样本

针对上述双层网络,计算代码及步骤如下:
G i v e n i n p u t x : a [ 0 ] = x z [ 1 ] = W [ 1 ] a [ 0 ] + b [ 1 ] a [ 1 ] = σ ( z [ 1 ] ) z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] a [ 2 ] = σ ( z [ 2 ] ) \begin{align*} &Given~~input~~x:\\ &~~~~~~~~a^{[0]}=x\\ &~~~~~~~~z^{[1]}=W^{[1]}a^{[0]}+b^{[1]}\\ &~~~~~~~~a^{[1]}=\sigma(z^{[1]})\\ &~~~~~~~~z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}\\ &~~~~~~~~a^{[2]}=\sigma(z^{[2]}) \end{align*} Given  input  x:        a[0]=x        z[1]=W[1]a[0]+b[1]        a[1]=σ(z[1])        z[2]=W[2]a[1]+b[2]        a[2]=σ(z[2])

整个训练集(多个样本)

前情提要: x ( i ) x^{(i)} x(i) 表示第 i i i 个训练样本,共有 m m m 个样本。

  • 原代码如下:
    在这里插入图片描述

  • 向量化代码:

    将多个训练样本 x ( i ) x^{(i)} x(i) ,按列堆叠为 X = [ ∣ ∣ ∣ x ( 1 ) x ( 2 ) ⋅ ⋅ ⋅ x ( m ) ∣ ∣ ∣ ] X=\left[ \begin{matrix} | & | & & |\\ x^{(1)} & x^{(2)} &··· & x^{(m)} \\ | & | & & | \\ \end{matrix} \right] X= x(1)x(2)⋅⋅⋅x(m) ,维度为 n x × m n_x×m nx×m

    可得新代码为:
    A [ 0 ] = X Z [ 1 ] = W [ 1 ] A [ 0 ] + b [ 1 ] A [ 1 ] = σ ( Z [ 1 ] ) Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] A [ 2 ] = σ ( Z [ 2 ] ) \begin{align*} &A^{[0]}=X\\ &Z^{[1]}=W^{[1]}A^{[0]}+b^{[1]}\\ &A^{[1]}=\sigma(Z^{[1]})\\ &Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}\\ &A^{[2]}=\sigma(Z^{[2]}) \end{align*} A[0]=XZ[1]=W[1]A[0]+b[1]A[1]=σ(Z[1])Z[2]=W[2]A[1]+b[2]A[2]=σ(Z[2])
    其中: Z [ 1 ] = [ ∣ ∣ ∣ z [ 1 ] ( 1 ) z [ 1 ] ( 2 ) ⋅ ⋅ ⋅ z [ 1 ] ( m ) ∣ ∣ ∣ ] Z^{[1]}=\left[ \begin{matrix} | & | & & |\\ z^{[1](1)} & z^{[1](2)} &··· & z^{[1](m)} \\ | & | & & | \\ \end{matrix} \right] Z[1]= z[1](1)z[1](2)⋅⋅⋅z[1](m) A [ 1 ] = [ ∣ ∣ ∣ a [ 1 ] ( 1 ) a [ 1 ] ( 2 ) ⋅ ⋅ ⋅ a [ 1 ] ( m ) ∣ ∣ ∣ ] A^{[1]}=\left[ \begin{matrix} | & | & & |\\ a^{[1](1)} & a^{[1](2)} &··· & a^{[1](m)} \\ | & | & & | \\ \end{matrix} \right] A[1]= a[1](1)a[1](2)⋅⋅⋅a[1](m) Z [ 2 ] Z^{[2]} Z[2] A [ 2 ] A^{[2]} A[2] 同理。

(五)经验法则

  • 当一层中有不同的节点时,我们一般将这些节点的参数或输出值(激活值)纵向堆叠起来。
  • 对于多个训练样本,我们一般将每个样本横向合并起来。

即:在每一步的输出矩阵中,横向指标对应不同的训练样本纵向指标对应某一层的不同节点

————————————————————————————————————————————————————————

上一篇博客下一篇博客
python中的广播

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

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

相关文章

阿里开源多模态大模型Ovis1.6,重塑出海电商AI格局

阿里开源Ovis1.6:多模态领域再夺第一 阿里再一次证明了自己在多模态领域的实力。这一次,阿里国际AI团队开源的多模态大模型Ovis1.6,不仅成功开源,还在多模态评测基准OpenCompass上击败了Qwen2VL-7B、InternVL2-26B和MiniCPM-V-2.…

Docker 进入容器并运行命令的方法

目录 理解 Docker 容器的基本概念 使用 docker exec 进入运行中的容器 基本用法 常用选项解析 选项详解 实际案例演示 1. 进入容器的交互式 Shell 2. 在容器中运行单个命令 3. 以指定用户运行命令 4. 设置环境变量并运行命令 5. 指定工作目录 使用 docker attach 附…

标准库标头 <bit>(C++20)学习

<bit>头文件是数值库的一部分。定义用于访问、操作和处理各个位和位序列的函数。例如&#xff0c;有函数可以旋转位、查找连续集或已清除位的数量、查看某个数是否为 2 的整数幂、查找表示数字的最小位数等。 类型 endian (C20) 指示标量类型的端序 (枚举) 函数 bit_ca…

使用LangGPT提示词让大模型比较浮点数

使用LangGPT提示词让大模型比较浮点数 背景介绍环境准备创建虚拟环境安装一些必要的库安装其他依赖部署大模型启动图形交互服务设置提示词与测试 LangGPT结构化提示词 背景介绍 LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-cha…

HObject复制耗时试用

测试源码一 //第一步const int N 1000;HObject[] imgs new HObject[N];for (int i 0; i < N; i){HOperatorSet.GenImageConst(out imgs[i], "byte", 1024 i, 1024 i);}//第二步List<HObject> lists new List<HObject>();for(int i 0; i < …

基于PHP的新闻管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的新闻管理系统。…

MySQL的缓存策略

目录 一、MySQL 缓存方案用来干什么 二、提升MySQL访问性能的方式 1、读写分离&#xff08;MySQL的主从复制&#xff09; 2、连接池 3、异步连接 三、缓存方案是怎么解决的 1、缓存与MySQL一致性状态分析 2、制定热点数据的读写策略 四、缓存方案问题的解决方法 1、缓…

酸枣病虫害智能化防控系统的探索与实践,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建枣类作物种植场景下酸枣病虫害智能检测识别系统

智慧农业&#xff0c;作为现代农业的高级形态&#xff0c;通过集成物联网、大数据、人工智能等先进技术&#xff0c;实现了农业生产过程的精准化、智能化管理。在酸枣等经济作物的种植过程中&#xff0c;病虫害的及时监测与防控直接关系到作物的产量与质量&#xff0c;进而影响…

react hooks--React.memo

基本语法 React.memo 高阶组件的使用场景说明&#xff1a; React 组件更新机制&#xff1a;只要父组件状态更新&#xff0c;子组件就会无条件的一起更新。 子组件 props 变化时更新过程&#xff1a;组件代码执行 -> JSX Diff&#xff08;配合虚拟 DOM&#xff09;-> 渲…

Knife4j 一款基于Swagger的开源文档管理工具

一、简单介绍 1.1 简介 Knife4j 是一款基于Swagger的开源文档管理工具&#xff0c;主要用于生成和管理 API 文档 二、使用步骤&#xff1a; 2.1 添加依赖&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spr…

spark之不同序列化对比

一&#xff0c;spark的rdd的序列话不同介绍 下面是使用不同序列化后的占用资源和数据大小 2&#xff0c;sparksql中序列化的区别 sparksql中使用序列化和不使用差别不大&#xff0c;英文sparksql中默认使用了encode自己实现的序列化方法&#xff0c;加上与不加序列化差别不大…

编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MSVC版)

相邻你找了很多博文&#xff0c;都没有办法。现在终于找到了正宗。 参考 GitHub - thecodemonkey86/qt_mysql_driver: Typical symptom: QMYSQL driver not loaded. Solution: get pre-built Qt SQL driver plug-in required to establish a connection to MySQL / MariaDB u…

.whl文件下载及pip安装

以安装torch_sparse库为例 一、找到自己需要的版本&#xff0c;点击下载。 去GitHub的pyg-team主页中找到pytorch-geometric包。网址如下&#xff1a; pyg-team/pytorch_geometric​github.com/pyg-team/pytorch_geometric 然后点击如图中Additional Libraries位置的here&am…

Leetcode Hot 100刷题记录 -Day18(反转链表)

反转链表&#xff1a; 问题描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&a…

基于阿里云免费部署Qwen1-8B-chat模型并进行lora参数微调从0到1上手操作

文章目录 一、申请资源二、创建实例三、克隆微调数据四、部署Qwen1-8B-chat模型1、环境配置2、模型下载3、本地模型部署 五、模型微调1、拉取Qwen仓库源码2、微调配置3、合并微调参数4、本地部署微调模型 一、申请资源 阿里云账号申请PAI资源详细教程我已于部署ChatGLM3时写过…

双立方(三次)卷积插值

前言 图像处理中有三种常用的插值算法&#xff1a; 最邻近插值 双线性插值 双立方&#xff08;三次卷积&#xff09;插值 其中效果最好的是双立方&#xff08;三次卷积&#xff09;插值&#xff0c;本文介绍它的原理以及使用 如果想先看效果和源码&#xff0c;可以拉到最底…

关于若尔当矩阵中过渡矩阵的求法

关于若尔当矩阵中过渡矩阵的求法 豆瓜爱数学 ​关注 桜井雪子 等 114 人赞同了该文章 本文主要介绍考研中常考的另一类问题&#xff0c;当我们确认一个Jordan标准形时&#xff0c;对于过渡矩阵如何确定&#xff1f;这个常常是我们复习过程中容易忽略的一部分内容&#xff0c;…

物联网——USART协议

接口 串口通信 硬件电路 电平标准 串口参数、时序 USART USART主要框图 TXE: 判断发送寄存器是否为空 RXNE: 判断接收寄存器是否非空 RTS为输出信号&#xff0c;用于表示MCU串口是否准备好接收数据&#xff0c;若输出信号为低电平&#xff0c;则说明MCU串口可以接收数据&#…

简单题69.x的平方根 (Java)20240919

问题描述&#xff1a; java代码&#xff1a; class Solution {public int mySqrt(int x) {if (x < 2) {return x; // 0 和 1 的平方根分别是它们自己}int left 2; // 从2开始&#xff0c;因为0和1已经处理了int right x / 2; // 最大可能的平方根不会超过 x / 2int mid;w…

列表、数组排序总结:Collections.sort()、list.sort()、list.stream().sorted()、Arrays.sort()

列表类型 一.Collections.sort() Collections.sort()用于List类型的排序&#xff0c;其提供了两个重载方法&#xff1a; 1.sort(List<T> list) &#xff08;1&#xff09;List指定泛型时只能指定引用数据类型&#xff0c;也就是说无法用于基本数据类型的排序。 &am…