深度学习(1)--基础概念

一.计算机视觉(CV)

(1).计算机视觉中图像表示为三位数组,其中三维数组中像素的值为0~255,像素的值越低表示该点越暗,像素的值越高表示该点越亮。

(2).图像表示 A*B*C,其中A,B分别为图像的长和宽,C则表示图像的颜色通道。

eg: 300*100*3 表示该图像的高度为300,宽度为100,颜色通道为3,即表示该图像有三个颜色通道。(RGB)

二.神经网络基础

1.得分函数:

(1).输入的图片经过得分函数获得对应每个类别的得分,其中x为图片参数,W为权重值参数。

(2).对于32x32x3的图片,一共有3072个像素点,所以像素点矩阵应当是一个3072x1大小的二维矩阵,而每个像素点对应一个权重值,所以权重值矩阵应当是一个1x3072大小的二维矩阵,两个矩阵相乘就可以得到对应该图片类别的一个得分。

(3).b为偏置项,其中W权重参数对结果起决定性作用,b偏置参数对结果进行微调。(b的矩阵大小和得分的矩阵大小相同,对于不同的类别分别进行不同的微调)

eg:将图片分为四个像素点,并选中三个类别图片的权重获取得分值的计算方法:

权重中正值表促进效果,负值表抑制效果,正值越大即对图像的决定性作用越强。

 2.损失函数:

损失函数(loss function)就是用来度量模型的预测值f(x)与真实值Y的差异程度的运算函数,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

损失函数使用主要是在模型的训练阶段,每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,来降低真实值与预测值之间的损失,使得模型生成的预测值往真实值方向靠拢,从而达到学习的目的。

eg:根据前一步得分函数计算出的得分值通过损失函数来计算损失值

损失函数 = 数据损失 (有多种计算方法)+ 正则化惩罚项(防止过拟合的情况出现)

过拟合:预测值和样本标签值几乎完全一致的情况,损失函数极小但泛化性能差。训练集的损失函数值很小,但是验证集/测试集上的损失函数值很大。

3.前向传播:

传播过程:将得分值转化为概率值再转换为损失值

(1).exp操作是对数进行指数运算(e^x)。

(2).normalize归一化计算,将前一步计算出的值转化为概率。

(3).通过对数函数将概率值转化为损失值。

4.反向传播:

反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新。

损失对参数梯度的反向传播可以被这样直观解释:由A到传播B,即由 ∂L/∂A 得到 ∂L/∂B ,由导数链式法则 ∂L/∂B=(∂L/∂A)⋅(∂A/∂B) 实现。所以神经网络的BP(Back-propagation)就是通过链式法则求出 L对所有参数梯度的过程。

可以一步一步的计算梯度值,也可以取一整块计算梯度值。

反向传播中的常见门单元:

(1).加法门单元:例如对式子x+y求梯度,分别对x和y求偏导得到的值都是1,所以得到的梯度值均为1*后一个式子计算出的梯度值,相当于均等分配。

(2).MAX门单元:将梯度传给最大的值。

(3).乘法门单元:例如对式子x*y求梯度,分别对x和y求偏导得到的是y和x,所以得到的梯度值分别为y*后一个式子计算出的梯度值以及x*后一个式子的梯度值,相当于互换梯度值。

三.神经网络整体架构

生物模型→数学模型

(1).隐藏层hidden layer1保存着由原始特征转化成的计算机能够识别的特征值。

(2).输入层input layer到隐藏层hidden layer的变化通过矩阵相乘实现,其中输入层矩阵所乘的矩阵即为权重矩阵。eg: I[1x3] X W[3x4] = H[1x4]

(3).hidden layer2保存着对hidden layer1的特征值进一步加工得到的特征值。此时应当乘一个4x4大小的权重矩阵。

(4).最后一步由隐藏层到输出层,其中同样乘以相应的权重矩阵。此时应当乘以一个4x1大小的权重矩阵。

(5).神经元个数越多,效果一般来说会越好,但是要避免过拟合等问题。

激活函数:

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数。

神经网络中每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换,所以如果没有激活函数,那么无论你构造的神经网络多么复杂,有多少层,最后的输出都是输入的线性组合,纯粹的线性组合并不能够解决更为复杂的问题。而引入激活函数之后,我们会发现常见的激活函数都是非线性的,因此也会给神经元引入非线性元素,使得神经网络可以逼近其他的任何非线性函数,这样可以使得神经网络应用到更多非线性模型中。 (在每一层对input值进行权重值的线性计算后再进行激活函数的非线性计算,给下一层的神经元引入非线性元素)

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

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

相关文章

PBR材质纹理下载

03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接: http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介:最大的纹理网站之一&#x…

【前后端的那些事】15min快速实现图片上传,预览功能(ElementPlus+Springboot)

文章目录 Element Plus SpringBoot实现图片上传,预览,删除效果展示 1. 后端代码1.1 controller1.2 service 2. 前端代码2.1 路由创建2.2 api接口2.2 文件创建 3. 前端上传组件封装 前言:最近写项目,发现了一些很有意思的功能&…

Maven《二》-- Maven的安装与配置(亲测成功版)

目录 🐶2.1 Maven的安装条件 🐶2.2 Maven安装步骤 1. 检查本地%JAVA_HOME% 2. 解压maven 3. 配置maven的环境变量 4. 校验maven是否配置成功 5. 配置本地仓库 🐶2.3 Idea配置本地Maven软件 🐶2.1 Maven的安装条件 各个工具…

three.js 缓动算法.easing(渐入相机动画)

效果&#xff1a;淡入&#xff0c;靠近物体 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div c…

基于网络爬虫的天气数据分析

二、网络爬虫设计 网络爬虫原理 网络爬虫是一种自动化程序&#xff0c;用于从互联网上获取数据。其工作原理可以分为以下几个步骤&#xff1a; 定义起始点&#xff1a;网络爬虫首先需要定义一个或多个起始点&#xff08;URL&#xff09;&#xff0c;从这些起始点开始抓取数据…

Spring | Spring中的Bean--下

Spring中的Bean: 4.Bean的生命周期5.Bean的配装配式 ( 添加Bean到IOC容器的方式 依赖注入的方式 )5.1 基于XML的配置5.2 基于Annotation (注解) 的装配 (更常用&#xff09;5.3 自动装配 4.Bean的生命周期 Spring容器可以管理 singleton作用域的Bean的生命周期&#xff0c;在此…

DBA技术栈(三):MySQL 性能影响因素

文章目录 前言一、影响MySQL性能的因素1.1 商业上的需求1.2 应用架构规划1.3 查询语句使用方式1.4 Schema的设计1.5 硬件环境 总结 前言 大部分人都一致认为一个数据库应用系统&#xff08;这里的数据库应用系统概指所有使用数据库的系统&#xff09;的性能瓶颈最容易出现在数…

Go 中 slice 的 In 功能实现探索

文章目录 遍历二分查找map key性能总结 之前在知乎看到一个问题&#xff1a;为什么 Golang 没有像 Python 中 in 一样的功能&#xff1f;于是&#xff0c;搜了下这个问题&#xff0c;发现还是有不少人有这样的疑问。 补充&#xff1a;本文写于 2019 年。GO 现在已经支持泛型&am…

TDengine 企业级功能:存储引擎对多表低频场景优化工作分享

在去年 8 月份发布的 3.1.0.0 版本中&#xff0c;TDengine 进行了一系列重要的企业级功能更新&#xff0c;其中包括对多表低频场景写入性能的大幅优化。这一优化工作为有此需求的用户提供了更大的便捷性和易用性。在本文中&#xff0c;TDengine 的资深研发将对此次优化工作进行…

Spring-BeanPostProcessor PostConstruct init InitializingBean 执行顺序

执行顺序探究 新建一个对象用于测试 Component public class Student implements InitializingBean {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}pu…

从matlab的fig图像文件中提取数据

这里用的是openfig&#xff08;&#xff09;函数打开的fig文件 →→→【matlab 中 fig 数据提取】 很简洁 →→→【MATLAB提取 .fig 文件中的数据】 这个给出了包含多个曲线的情况 →→→【提取matlab fig文件里的数据和legend】 chatgpt给出的方法 打开fig文件并保存数据 我的…

《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks)

02 Jupyter入门&#xff08;Getting started with Jupyter notebooks&#xff09; 《Python数据分析技术栈》第01章 02 Jupyter入门&#xff08;Getting started with Jupyter notebooks&#xff09; Before we discuss the essentials of Jupyter notebooks, let us discuss…