【深度学习】第一门课 神经网络和深度学习 Week 3 浅层神经网络

news2024/11/26 0:13:05

🚀Write In Front🚀
📝个人主页:令夏二十三
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:深度学习
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊

文章目录

3.1 神经网络概述

3.2 神经网络的表示

3.3 计算一个神经网络的输出

3.3.1 神经网络的符号惯例

3.3.2 神经网络的计算

3.4 多样本向量化

3.5 向量化实现的解释

3.6 激活函数

3.11 随机初始化


3.1 神经网络概述

本周的学习目标是实现一个神经网络,现在我们预览一下这周将要学习的内容。

上面讲了逻辑回归模型,也就是多个输入进入一个模型中,得到一个输出,由于模型中包含Sigmoid函数,因此输出为 0 或 1 。

 这样的一个模型在神经网络中只是一个节点:

 注意, [ i ] 表示第 i 层,( i ) 表示第 i  个训练样本,不能搞混了。

一个神经网络会包含很多层,其实道理跟最简单的逻辑回归模型是一样的,都是从左到右做前向传播,由特征值得到最终结果预测值,训练的话,从右往左依次求导,就可以对参数进行更新。

3.2 神经网络的表示

  • 输入层:图中最左侧的输入特征 x1、x2、x3 组成的一层称为输入层,也就是这个神经网络的输入。
  • 隐藏层:在神经网络的训练中,我们用到的训练集只包含输入层和输出层的数据,而神经网络中的的数据是看不到的,但是它们又确实存在,于是称之为隐藏层。
  • 输出层:在图中,这个神经网络只有一个 y^ 作为输出,它是由一个节点输出的,这个节点就是这个神经网络的输出层。

神经网络中,每一个输入都可以使用带上角标 [ i ] 的 a 来表示,由于上一层的节点被激活后才会有输出,于是这里的 a 表示下一层节点输入的激活值(Active Value)。

在这个示例里,输出层的每个输入特征都可以写成 a ,表示输入层的激活值,其上角标都为 [ 0 ];

在隐藏层,我们可以看到有四个节点,于是就会有四个激活值从节点输出,并输入到下一层,这里的激活值 a 的上角标都为 [ 1 ] ,在代码中,我们把这一层的激活值集合到一个列向量里,如图所示:

最后的输出层产生的数值,也就是 y^,我们将其取值为 上角标为 [ 2 ] 的激活值 a。

在深度学习领域,神经网络的层数是不包含输入层的,于是我们把这个示例称为一个两层的神经网络。

3.3 计算一个神经网络的输出

3.3.1 神经网络的符号惯例

  • x :输入特征
  • a :每个神经元的输出
  • W :特征的权重
  • 上标 [ i ] :神经网络的第 i 层
  • 下标 i :该层神经网络的第 i 个神经元

3.3.2 神经网络的计算

其实就跟之前提到的逻辑回归是一样的,首先计算 z,再套用 Sigmoid 函数计算出 a,一个神经网络只是这样做了好多次重复计算。

 回到前面的示例,我们有了输入后,就可以计算隐藏层的激活值:

 在代码中,我们可以利用矩阵运算(向量化)来缩短计算时间:

总而言之,在这里我们只要做下面这四个计算:

 通过这些公式,我们可以根据给出的一个单独的输入特征向量计算出一个简单神经网络的输出。

3.4 多样本向量化

神经网络训练中涉及到很多输入样本,我们需要把这些输入样本集成到一个矩阵中,这样就可以实现更加方便的计算,通过矩阵运算可以同时对所有样本进行预测值的求解,矩阵如下:

 从水平上看,矩阵代表了 m 个训练样本,从竖直上看,矩阵的不同 [ i ] 索引对应了不同的隐藏单元。

3.5 向量化实现的解释

使用上面的方法得到矩阵和向量后就可以使用先前的公式进行 z 的计算了:

矩阵乘以列向量,最终得到的是列向量,再通过向量和常数的加法,加上 b,也就得到了最终的 z。

3.6 激活函数

训练一个神经网络时,需要决定使用哪种激活函数用在隐藏层上,哪种用在输出层上。激活函数有很多,上面只提到了 Sigmoid 函数,但其实还有其他的,有时候用起来更好。

 选择激活函数的经验:

  • 对于二分类问题,输出层选择 Sigmoid 函数,然后其他的所有单元都选择 Relu 函数;
  • 如果在隐藏层上不确定使用哪个激活函数,那就用 Relu 函数。

要注意的区别:

  • 在实践中,使用 Relu 函数激活的神经网络通常比用 sigmoid 或 tanh 函数激活的学习地更快;
  • sigmoid 函数和 tanh 函数在正负饱和区的梯度都接近于0,这会造成梯度弥散,而 Relu 函数和 Leaky Relu 函数大于0部分都为常数,不会产生梯度弥散现象。

3.11 随机初始化

我们在训练神经网络的时候,权重随机初始化是很重要的,因为如果所有节点输出的权重值一样的话,同一层下的所有节点将会是一模一样的,那样设置这些节点就没有意义。

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

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

相关文章

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题 2024/5/3 9:33 缘起:因为工作需要,编译服务器上都会安装Ubuntu20.04。 但是因为WINDOWS强悍的生态系统,偶尔还是有必须要用WINDOWS的时候,于是也安装了WIN10。 双系…

AJ-Report开源数据大屏 verification;swagger-ui RCE漏洞复现

0x01 产品简介 AJ-Report是一个完全开源的BI平台,酷炫大屏展示,能随时随地掌控业务动态,让每个决策都有数据支撑。多数据源支持,内置mysql、elasticsearch、kudu等多种驱动,支持自定义数据集省去数据接口开发,支持17+种大屏组件,不会开发,照着设计稿也可以制作大屏。三…

Linux进程——Linux下常见的进程状态

前言:在进程学习这一块,我们主要学习的就是PCB这个进程控制块,而PBC就是用来描述进程的结构体,而进程状态就是PCB结构体中的一个变量。 本篇主要内容: 操作系统中的进程状态Linux下的进程状态 在开始之前,我…

MLP手写数字识别(2)-模型构建、训练与识别(tensorflow)

查看tensorflow版本 import tensorflow as tfprint(Tensorflow Version:{}.format(tf.__version__)) print(tf.config.list_physical_devices())1.MNIST的数据集下载与预处理 import tensorflow as tf from keras.datasets import mnist from keras.utils import to_categori…

排序算法--直接选择排序

前提: 选择排序:选择排序(Selection sort)是一种比较简单的排序算法。它的算法思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 话不多说,直接放图…

Xamarin.Android项目显示Properties

在 Visual Studio 2022 中,如果您需要调出“Properties”(属性)窗口,您可以使用以下几种方法: 快捷键: 您可以按 F4 快速打开当前选择项的“Properties”窗口。

postman中百度preview无法加载的解决方案

问题 在使用postman关联时,百度接口与天气接口已使用glb_city关联,但在百度接口发送请求时,发现preview无法加载 解决方案 1、进入百度 百度全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中…

【云原生】Docker 实践(二):什么是 Docker 的镜像

【Docker 实践】系列共包含以下几篇文章: Docker 实践(一):在 Docker 中部署第一个应用Docker 实践(二):什么是 Docker 的镜像Docker 实践(三):使用 Dockerf…

在M1芯片安装鸿蒙闪退解决方法

在M1芯片安装鸿蒙闪退解决方法 前言下载鸿蒙系统安装完成后,在M1 Macos14上打开闪退解决办法接下来就是按照提示一步一步安装。 前言 重新安装macos系统后,再次下载鸿蒙开发软件,竟然发现打不开。 下载鸿蒙系统 下载地址:http…

eNSP-抓包解析HTTP、FTP、DNS协议

一、环境搭建 1.http服务器搭建 2.FTP服务器搭建 3.DNS服务器搭建 二、抓包 三、http协议 1.HTTP协议,建立在FTP协议之上 2.http请求 3.http响应 请求响应报文参考:https://it-chengzi.blog.csdn.net/article/details/113809803 4.浏览器开发者工具抓包…

堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面

文章目录 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41),framework修改,去除第三方app的倒计时页面1.打印异常堆栈2.去除第三方app的倒计时页面3.模拟点击事件跳过首页进入主页 堆栈打印跟踪Activity的启动过程(基于Android10.0.0-r41)&#x…

SpringCloud微服务项目创建流程

为了模拟微服务场景,学习中为了方便,先创建一个父工程,后续的工程都以这个工程为准,实用maven聚合和继承,统一管理子工程的版本和配置。 后续使用中只需要只有配置和版本需要自己规定之外没有其它区别。 微服务中分为…

MLP实现fashion_mnist数据集分类(2)-函数式API构建模型(tensorflow)

使用函数式API构建模型,使得模型可以处理多输入多输出。 1、查看tensorflow版本 import tensorflow as tfprint(Tensorflow Version:{}.format(tf.__version__)) print(tf.config.list_physical_devices())2、fashion_mnist数据集分类模型 2.1 使用Sequential构建…

4 Spring AOP

目录 AOP 简介 传统开发模式 先来看一个需求 解决方案 AOP 图示 Spring 启用 AspectJ 基于 xml 配置 创建 pom.xml 创建 UserService 借口和 UserServiceImpl实现类 创建 LogAdvice 日志通知 创建 log4j.properties 重点:创建 spring-context-xml.xml 配…

MyBatis:mybatis基础操作

MyBatis基础操作 新增 接口方法 Insert() insert();删除 接口方法 Delete() delete();Delete("delete from emp where id #{id}") public abstract void delete(Integer id) //如果只传了一个形参,括号内可以随意写修改 接口方法 Update() update();查询 接…

Jupyter Notebook魔术命令

Jupyter Notebook是一个基于网页的交互式笔记本,支持运行多种编程语言。 Jupyter Notebook 的本质式一个Web应用程序,便于创建和共享文学化程序文档,支持实现代码,数学方程,可视化和markdown。用途包括:数据…

MATLAB中自定义栅格数据地理坐标R,利用geotifwrite写入tif

场景描述: 有时候将nc格式的数据转成tiff,或者是将一个矩阵输出成带有地理坐标信息tiff数据时,常常涉及到空间参考的定义和geotiffwrite()函数。 问题描述: 以全球数据为例,今天发现在matlab中对矩阵进行显示后&…

【大模型学习】大模型相关概念

知识库 Embeding 嵌入,又称向量化、矢量化。 Prompt engineer 提示词工程 提示工程技巧 RAG 检索增强生成,提高文本的准确性和丰富性。 Fine tuning 微调,优化已有人工智能模型以适应特定任务的技术。 AI agent AI代理人&…

华为机考入门python3--(19)牛客19- 简单错误记录

分类:字符串 知识点: 分割字符串 my_str.split(\\) 字符串只保留最后16位字符 my_str[-16:] 列表可以作为队列、栈 添加元素到第一个位置 my_list.insert(0, elem) 增加元素到最后一个位置 my_list.append(elem) 删除第一个 my_list.pop(0)…

Python中的数据可视化:阶梯图matplotlib.pyplot.step()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 Python中的数据可视化: 阶梯图 matplotlib.pyplot.step() [太阳]选择题 matplotlib.pyplot.step()的功能是? import matplotlib.pyplot as plt import numpy as…