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

(一)神经网络的层数

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

输入层称为第零层。

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

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

在这里插入图片描述

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

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

  • 层数用上标 [ 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.rhkb.cn/news/428360.html

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

相关文章

基于深度学习的花卉智能分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 传统的花卉分类方法通常依赖于专家的知识和经验,这种方法不仅耗时耗力,而且容易受到主观因素的影响。本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络&#…

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章:Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章:Sentosa_DSML社…

环境搭建2(游戏逆向)

#include<iostream> #include<windows.h> #include<tchar.h> #include<stdio.h> #pragma warning(disable:4996) //exe应用程序 VOID PrintUI(CONST CHAR* ExeName, CONST CHAR* UIName, CONST CHAR* color, SHORT X坐标, SHORT y坐标, WORD UIwide, W…

硬件工程师笔试面试——开关

目录 11、开关 11.1 基础 开关原理图 开关实物图 11.1.1 概念 11.1.2 常见的开关类型及其应用 11.2 相关问题 11.2.1 开关的工作原理是什么? 11.2.2 在设计一个电子系统时,如何选择最适合的开关类型? 11.2.3 不同类型的开关在实际应用中有哪些优势和局限性? 11.…

AI+教育|拥抱AI智能科技,让课堂更生动高效

AI在教育领域的应用正逐渐成为现实&#xff0c;提供互动性强的学习体验&#xff0c;正在改变传统教育模式。AI不仅改变了传统的教学模式&#xff0c;还为教育提供了更多的可能性和解决方案。从个性化学习体验到自动化管理任务&#xff0c;AI正在全方位提升教育质量和效率。随着…

使用Renesas R7FA8D1BH (Cortex®-M85)实现多功能UI

目录 概述 1 系统框架介绍 1.1 模块功能介绍 1.2 UI页面功能 2 软件框架结构实现 2.1 软件框架图 2.1.1 应用层API 2.1.2 硬件驱动层 2.1.3 MCU底层驱动 2.2 软件流程图 4 软件功能实现 4.1 状态机功能核心代码 4.2 页面功能函数 4.3 源代码文件 5 功能测试 5.1…

基于多域名,通过云运营商弹性负载,Nginx配置等基于的多租户系统部署

已经开发好久的系统&#xff0c;因为业务上没有需求&#xff0c;没有做上线部署&#xff0c;此系统为多租户系统&#xff0c;原来设计是通过租户码参数来识别的&#xff0c;每个租户访问&#xff0c;需要传自己的码过来&#xff0c;才能确定是哪个租户登录系统&#xff0c; 今…

nacos和eureka的区别详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Nacos 和 Eureka 是两种服务注册与发现的组件&#xff0c;它们在微服务架构中扮演重要角色。两者虽然都是为了解决服务发现的问题&#xff0c;但在功能特性、架构、设计理念等方面有很多不同。以下是详细的…

C++——map和set的使用以及map系列

目录 map和set的使用 1. 序列式容器和关联式容器 2. set系列的使⽤ 2.1 set和multiset参考⽂档 2.2 set类的介绍 2.3 set的构造和迭代器 2.4 set的增删查 set的增删查关注以下⼏个接⼝即可&#xff1a; 2.6 find和erase使⽤样例&#xff1a; lower_bound(); upper_bo…

如何选择OS--Linux不同Distribution的选用

写在前言&#xff1a; 刚写了Windows PC的不同editions的选用&#xff0c;趁热&#xff0c;把Linux不同的Distribution选用也介绍下&#xff0c;希望童鞋们可以了解-->理解-->深入了解-->深入理解--...以致于能掌握特定版本的Linux的使用甚者精通。……^.^…… so&a…

项目文件配置

1. 参数配置化 1.1 问题分析 1.2 问题解决 Value 注解通常用于外部配置的属性注入&#xff0c;具体用法为&#xff1a;Value("${配置文件中的key}") 2. yml配置文件 2.1 SpringBoot提供了多种属性配置方式 2.2 常见配置文件格式对比 2.3 yml 基本语法 大小写敏…

实时美颜的技术突破:视频美颜SDK与直播美颜工具的开发详解

如今&#xff0c;视频美颜SDK和直播美颜工具的开发&#xff0c;为各类应用提供了技术支持&#xff0c;使得美颜效果更加智能、高效。本文将详细探讨实时美颜的技术突破及其在视频美颜SDK和直播美颜工具中的应用与开发。 一、视频美颜SDK的核心技术 1.人脸检测与特征点识别 视…

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 < …

OpenCV特征检测(3)计算图像中每个像素处的特征值和特征向量函数cornerEigenValsAndVecs()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算图像块的特征值和特征向量用于角点检测。 对于每一个像素 p &#xff0c;函数 cornerEigenValsAndVecs 考虑一个 blockSize blockSize 的邻…

[Spring]Spring MVC 请求和响应及用到的注解

文章目录 一. Maven二. SpringBoot三. Spring MVC四. MVC注解1. RequestMapping2. RequestParam3. PathVariable4. RequestPart5. CookieValue6. SessionAttribute7. RequestHeader8. RestController9. ResponseBody 五. 请求六. 响应 一. Maven Maven是⼀个项⽬管理⼯具。基于…

JavaScript发送邮件:实现前端触发的教程?

JavaScript发送邮件的方式&#xff1f;怎么使用JavaScript发信&#xff1f; 无论是用户反馈、联系表单还是自动通知&#xff0c;前端触发的邮件发送功能都能极大地提升用户体验。AokSend将详细介绍如何通过JavaScript发送邮件&#xff0c;实现前端触发的邮件发送功能。 JavaS…

力扣 438找到字符串中所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/ 题目描述 题目分析 异位词所表示的空间 P \text{P} P 即一字符串的所有排列,记 s i \bold{s_i} si​为以 s [ i ] s[i] s[i]开头的长度为 plen \text{plen} plen的 s s s子串 故本题可理解为求解 A n s Ans Ans…

LabVIEW提高开发效率技巧----采用并行任务提高性能

在复杂的LabVIEW开发项目中&#xff0c;合理利用并行任务可以显著提高系统的整体性能和响应速度。并行编程是一种强大的技术手段&#xff0c;尤其适用于实时控制、数据采集以及多任务处理等场景。LabVIEW的数据流编程模型天然支持并行任务的执行&#xff0c;结合多核处理器的硬…

Toon Dinosaurs 2 可爱卡通恐龙怪物模型带动画

剑龙、甲龙、厚头龙、副龙、二龙和腕龙使用(根运动)动画文件绘制人物。 动画: 空闲+随机空闲动画跳跃(跳跃、跌倒、落地)。 3攻击 2个被击中,1个死亡和1个起床动画。 咆哮 左转和右转。跑,跑,转身。 最近添加:向前走,转身走。 查看视频以观看动画! 近似三角形计数:…

读构建可扩展分布式系统:方法与实践10最终一致性

1. 最终一致性 1.1. 在一些应用领域&#xff0c;通常谈论的是银行和金融行业&#xff0c;最终一致性根本不合适 1.2. 事实上&#xff0c;最终一致性在银行业已经使用了很多年 1.2.1. 支票需要几天时间才能在你的账户上进行核对&#xff0c;而且你可以轻松地开出比账户余额多的…