自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

原创 【C++】C++中如何处理多返回值

上述例子中,两个字符串是程序进入main函数后,先开始运行func函数,而运行func函数就先组织参数,组织参数就是在常量区先写入"lyy""liyuanyuan"这两个字符串,然后才开始执行func,func又是在栈内存创建的,而执行func我们是通过引用传参的,这样就少了一次复制。写过python的同学都知道,当你写一个函数的返回时,那是你想返回谁就能返回谁,想返回几个就可以返回几个,几乎是非常的随心所欲了,因为python背后是做了很多很多事情才让你如此肆意的。func函数执行完毕,就是赋值给e。

2024-09-24 16:10:34 396

原创 【C++】C++库:如何链接外部库、静态链接和动态链接,以及如何自建库并使用

下载完毕后打开(上图5处),5处是C++库的典型组织结构,这里我们先简单介绍一下上图5处的文件:第一个文件夹docs:打开基本都是。

2024-09-20 09:18:23 1259 1

原创 【C++】C++中的动态数组vector

C++给我们提供一个叫做Vector的类,这个Vector在std命名空间中。Vector不是向量的意思,更为准确的说是ArrayList,因为它的本质是一个动态数组。但与我们之前讲的数组类型不同的是,它可以调整数组的大小。意思就是当你创建一个vector时,它是没有固定大小的(当然你也可以初始化一个特定的大小,但一般我们不这样做),我们也不需要care它的大小,只要把元素放进去就行。每次你放入一个元素,数组的大小就会增长。

2024-09-13 15:18:48 859

原创 【C++】理解C++中的复制、复制构造函数

也所以当代码执行到B处,先释放对象b时,就已经调用了析构函数删除了堆上的字符串数组了,再释放对象a时,又得调用析构函数,此时a中的p的值指向的堆内存已经被标记为free状态了,你再调析构函数free那块内存就没法free了,于是报了_UNKOWN_BLOCK。可见,不是任何时候我们都需要拷贝的,上例中的func函数,调用了3次,就拷贝了3次参数,调用完毕还得销毁,所以也销毁了3次。本篇先讲什么是copy,然后手写一个字符串复制的类,揭开拷贝的本质,就是拷贝都做了什么工作,并从中引出什么是浅拷贝、深拷贝。

2024-09-12 16:46:02 913

原创 【C++】作用域指针、智能指针、共享指针、弱指针

因为虽然Entity是创建在堆内存上的,但是指向Entity的指针e可是创建在栈内存上的,e的作用域是它所在的花括号{},所以当{}指向完毕,e就销毁了,那指向Entity的指针都销毁了,就是相当于delete e;继续往下执行,就是22行的后花括号},就从第22行跳到第16行,再从第16行跳到第7行,第7行执行完毕后跳回第16行,执行16行,16行执行完毕后才跳回22行,算是22行执行完毕了,此时所有对象的值都没有了。作用域指针是一个类,是指针的包装器,在构造时用堆分配指针,然后在析构时删除指针。

2024-09-08 11:17:43 836

原创 【C++】如何用C++创建对象,理解作用域、堆栈、内存分配

而堆是不同的,一旦你在堆中创建一个对象,这个对象就会一直在那里,直到你做出释放它的决定。但是上述在栈上创建的对象和在堆上创建的对象还是有差异的,差异就是小标题1中的四点。即使一个没有类成员的类,就是啥也没有的类,你实例化它创建的对象也是至少要占用1个字节的内存的。正常的情况下,一个类中是有很多类成员的,所以我们需要内存存放类实例的这一堆变量的值。第二个差异是:如果你的对象太大,或者对象太多,你最好也是把你的对象创建在堆上。从上图可见,不管在栈上创建类实例还是在堆上创建类实例,都自动默认的调用了构造函数。

2024-09-05 12:38:49 700 2

原创 【C++】lambda表达式、类成员初始化列表、三元运算符、运算符及其重载、箭头操作符

也就是类成员初始化列表。就是我们在构造函数中初始化类成员(变量,有时也叫属性)的一种方式。见mutable关键字。

2024-09-03 16:15:42 229

原创 【C++】C++中的关键字:const、mutable、auto、new、explicit、this....

const是一个限定修饰符,表示承诺某个对象不能改变,是强制开发人员写代码时的一个规则,也就是语法上的一个规则。但是如果这个类方法必须得改变类中的某些变量,而且它还想是个const方法时,就得用mutable关键字来修饰那个被改变得变量。小结:const用在类的方法中,一般都是这个方法声明不改变类的其他东西,就是读读,不修改的。在讲常量部分,有一个叫常变量的,就是就是用const限定一个常量,就变成常变量了。mutable是字面意思是可改变的,immutable是不可改变的、无法改变的。

2024-09-03 16:11:45 835

原创 【C++】深度理解C++数据类型:常量、变量、数组、字符串、指针、函数

用array数组,虽然要增加点开销,但要方便很多,比如计算数组长度.size即可,还有像边界检查等我们都不需要考虑了。数组就是一个变量(数组)中有多个变量(各个元素)数组中的所有元素是连续放在某一块儿内存区域的。数组名就是这个数组在内存中的第一个元素的地址。

2024-06-29 17:15:49 399

原创 【C++】类、静态、枚举、重载、多态、继承、重写、虚函数

上面的Log类中的公共变量我用了两次public是因为:我喜欢把类中不同的部分分开来写,比如,public方法写在一部分,public变量又放另一部分,public静态变量又会放其他一部分。类外的函数访问类外的变量,肯定访问不了类内的变量了。说明:上面的步骤只是展示了如何逻辑清晰的写一个类,但事实上上面的代码是非常糟糕的,后面我们将使用更多的概念来改进这个类,使其达到专业生产级水平的代码。唯一的区别就是结构体中的变量默认都是共有的,类中的变量没有public声明就都默认是私有的。静态方法无法访问类的实例。

2024-06-26 12:33:27 1096

原创 【C++】一个极简但完整的C++程序

认真看过编译原理的同学就知道,变量名其实是给程序员看的,程序编译的时候,变量名直接被编译器映射成首地址和长度(长度是从变量的类型上看到的,比如上面的int类型)。某个书店将每本售出的图书的书名和出版社,输入到一个文件中,这些信息以书售出的时间顺序输入,每两周店主会手工计算每本书的销售量、以及每个出版社的销售量。(3a)按出版社排序 (3b)对每个出版社的书,按书名排序 (3c)在每个出版社组中,比较相邻的书名,如果二者匹配,增加第一个的数量,删除第二个。语句是C++中最小的程序单元。上述代码就是3条语句。

2024-06-21 00:09:54 1402

原创 【C++】循环、控制流语句、指针、引用

我们约定成俗是这样使用的:当我们确实是想无限持续循环的,比如游戏,就是想让一帧帧一直循环,我们不在意究竟循环了多少次,循环到哪里,就是不介意是否要去声明i,也不介意i究竟是多少了,就是想无限循环下去,那我们就使用while循环。如果条件是true,就执行循环体,一直执行到for循环的最后的花括号},跳回到for语句,此时首先执行的是i++,然后再判断条件,条件true就是上面的一套流程;如此循环,直到B不满足条件,也就是B返回false,指令指针跳出for循环,也就是执行E后面的代码行(第12行)。

2024-06-19 16:39:30 721

原创 【C++】数据类型、函数、头文件、断点调试、输入输出、条件与分支、VS项目设置

但你自定义的类型都是在这些基本类型之上创建的。(7)数据转化为指针或引用。指针通过一个*号来声明,引用用&表示。说来话长,这些以后要专门聊。

2024-06-17 10:54:37 977 1

原创 【C++】编译原理

三、C++编译前面给大家演示了如何从写C++代码到编译代码再到执行代码的全过程。这个过程中非常重要的编译环节,被我们一个按钮或者一个ctrl+F7快捷键就给带过了。其实这个环节非常重要,如果你非常了解这个环节,你开发源代码就会更加自信和清醒,而不是迷迷糊糊,摸棱两可……下图直观描述了从源代码到计算机执行完毕的各个大环节:内容实在多,图上没位置了,这里就继续说明上图。上图的1234是几个大步骤。1是我们的开发环境,你的代码就是在这个平台上书写、调试、编译、执行。。。等等上图2是我们在1中开发的

2024-06-12 22:01:58 1208

原创 【C++】环境搭建及基本工作流程

就是.exe文件,而这个过程就要用到上图的链接Linker,就是把所有的.obj文件link到一起,形成一个.exe文件。点击上面的绿色空心三角,是编译并执行的意思,就出现下面的output及Debug Console,这一步我们只是写源文件代码,所以你可以先不点击这个三角。以上就是编译的基本流程,其实也就是个大概的整体过程,如果需要深度理解每一个细节的话,还得看一些编译和链接方面的更深的细节东西。说明:上面的编译过程是仅仅编译了一个Main.cpp一个文件的过程,所以这个过程是不会进行链接Link的。

2024-06-10 00:31:49 919

原创 【python】flask 框架

我把网址信息rul发给web服务器,web服务器把回答信息返回到我电脑的浏览器,我电脑的浏览器再进行渲染后,服务器的返回信息就在我电脑的浏览器中显示出来了。前端页面中比如输入账号密码之类的就是表单,当前端表单请求后端代码时(比如前端表单将数据交给后端代码,让后端代码验证用户名和密码是否正确,并且给前端返回正确或不正确的信息),此时就是POST请求。这些请求数据中,比如就可能有form表单请求。是不是就返回了一个页面,当然这个页面有点简单,你想要很复杂的页面,就得移驾去学html、css、js等这些东西。

2024-06-06 23:02:06 598 3

原创 【python】安装、版本及环境管理

所以只要我们进入的是我们想进入的python解释器python.exe文件所在的Scripts目录下即可,也相当于进入了想进的虚拟环境。但是,很多时候,我们不同项目需要不同的包及其相关的依赖包,所以实际中,我们是希望项目和项目分开的,所以我们就需要搭建一个python的虚拟环境。一是你可以安装一个anaconda,它是一个python的集成包,因为集成了很多东西,功能比较强大,尤其是里面集成的jupyter编辑器非常好用,所以非常流行,你可以到anaconda官网下载安装包安装。

2024-06-03 20:22:18 437 2

原创 【python】python语法

说明:这个小甲鱼讲的课是非常棒,就是中间老穿插黄段子,有一天被我孩子听到了一段,让我很尴尬。

2024-04-30 19:22:57 422

原创 【深度视觉】第十七章:卷积网络的可视化

十七、卷积网络可视化至此,不管是分类任务还是检测任务还是生成任务,我们都已经学了各个任务中的经典网络。那为什么这些架构有效呢?其中可视化是最直观的解释,所以本章讲讲可视化。 可视化可以让我们人类直观的看到卷积网络中到底发生了什么:1、神经网络第一层卷积层的卷积核组的可视化:从上图可以看出,不管是简单的alexnet还是复杂的densenet,它的第一层学的模板(卷积核组)都是一些简单的基元,比如点、线、斑、带状等这些简单的东西。也就是第一层卷积层是从输入的原图上抽取了原图的一些基元。也就是第一层

2024-04-25 11:50:47 1044

原创 【深度视觉】第十六章:生成网络4——条件GAN之cGAN、SGAN、ACGAN、infoGAN、LAPGAN

这里的标签指的是真实数据的真实标签,比如mnist数据集,真实数据的真实标签就是123456789这10个数字。那如何把这个标签信息喂入模型?但是cgan的这种输入标签的做法,会出现模型不一定会重视你输入的标签信息的情况,此时infogan提出了一 个解决方案:infogan提出给损失函数加入一项:“能以某种评估指标衡量生成的图像G(x/c)与额外信息(c)之间 的相关性”项。那把标签都输入模型了,那模型的输出就是在知道标签的条件下的预测结果,所以生成器的输出结果和判别器的预测结果,就都是一个条件概率了。

2024-04-24 15:55:29 934

原创 【深度视觉】第十五章:生成网络3——LSGAN、WGAN

但是一旦算出推土机距离,那就都是最优的距离,而所有的最优距离是单调的,如下图所示,d0一定是大于d50的,d50一定是大于0的。LSGAN针对GAN的问题,一是它抛弃了架构最后的sigmoid激活函数,之间输出结果,二是它对损失函数进行了改进,它不采用二分类交叉熵了(也就是KL散度),它采用回归的方法,让模型最后的输出往0和1上靠,就是真样本的标签是1,假样本的标签是0,但是损失函数是L1或者L2距离了,因为是回归嘛。所以cgan的损失函数和普通的gan的损失函数其实是一样的。

2024-04-23 15:31:16 663

原创 【深度视觉】第十四章:生成网络2——GAN、DCGAN

比如,如果你的损失函数仅仅是判别器的判别损失,那就是二分类交叉熵损失,这么一个损失函数时,那生成器就不往越真的方向迭代了啊,此时生成器越摆烂越好,判别器也可以轻松把真判为真、把假判为假,此时损失是垮垮往下降的啊。,也就是判别器输出的是一类标签下的概率,就是当判别器输出大于0.5(当然这个阈值你可以自己定),就是认为是标签1的概率,也就是认为图片是真的概率,当判别器的概率小于0.5,就说明判别器认为生成器生成的是假数据。判别器的目标是让自己的判断准确性越来 越高,尽量判别出真伪,所以判别器的迭代方向是向。

2024-04-19 10:29:45 1020 1

原创 【深度视觉】第十三章:生成网络1——PixelRNN/CNN、VAE

我们前面学习的模型都是有监督学习,就是模型在训练的时候一定是要有标签的。因为没标签你就没法计算损失,没有损失就没法反向计算梯度,就没法训练模型了,所以一定得要标签才能训练的模型都是有监督学习。比如,生成模型就是一种无监督学习模型,还比如机器学习中的聚类算法、降维算法等也都是无监督学习模型。这个就是聚类算法中的其中一个,感兴趣的可以看看。机器学习算法和深度学习算法是有本质上的不同的,个人认为机器学习算法更难一些,也更精巧一些,都是人类智慧的精华,非常巧妙,当然其中牵扯到的数学就比深度学习上难得多。

2024-04-13 10:35:49 381

原创 【深度视觉】第十二章:目标检测、实例分割

但是后者这样做就会出现一个问题:上图的C处,你裁剪和缩放完毕后,整个网络的梯度被打断了啊,裁剪和缩放是没法回传梯度的!补充:以后我们要是学人的检测,就是先定义一些人的关键的,然后检测图片中有没有人(分类任务),如果有,那么这个人的关键点坐标是什么(就是再回归你定义的那些关键点的坐标),就可以采取这种方式检测。现在手机里的人脸检测,就是这样穷举图片中的所有区域进行判断是不是人脸,但是它用的判别器不是CNN是Adaboost,因为Adaboost快呀,但CNN就不行了。

2024-04-11 19:08:23 541

原创 【深度视觉】第十一章:语义分隔

而Unet在医疗图像分隔领域之所以这么好,我感觉是:我们知道浅层卷积关注的是图像的纹理特征,就是关注的是图像的细节点,而深层卷积则关注的是高层语义信息,就是图像的轮廓等更大感受野的信息。因为通过反卷积得到的更大的尺寸的特征图的边缘,是缺少信息的,毕竟每一次下采样提炼特征的同时,也必然会损失一些边缘特征,而失去的特征并不能从上采样中找回,因此通过特征的拼接,来实现边缘特征的一个找回是非常有意义的。分类是对图像了解程度最浅的一个任务,分类模型得到的信息也是最少的,也就是标签只有"是"或"不是"这种简单的信息。

2024-03-22 16:01:30 740

原创 【机器学习算法】: MeanShift算法

之所以把这个算法单独拿出来讲解,是因为这个算法比较有用,很多算法搭配这个算法,实现起来效果会更好,但是这个算法放到哪个章节都显得很突兀,因为这个算法其实是一个机器学习中的聚类算法,所以应该把这个算法和其他几种聚类算法比如kmeans、DBSCAN、层次聚类算法Birch等放在一起写,但是由于精力有限,先单独成一章把这个算法说清楚吧,而且这个算法的亮点就是用在图像处理领域。其他几种聚类算法以后有机会再写机器学习算法时再写吧。

2024-03-12 10:15:56 1310

原创 【财会】企业财税核算

最近要了解一些财会税务方面的东西,技术类文章要暂停更新一阵子了。1、研发活动的资料、文件、制度 (文字型资料)2、账面要有研发费用科目,就是你有归集研发费用 (财务资料)3、技术成果:除了研发就是技术成果转化,指对外出售的产品或服务、样品、样机等,这种情况是按照13%交税,就是订单类的才是技术成果转化;而成果专利转让、技术入股、转让等不是。4、核心自主知识产权:必须要有知识产权(数量和质量),才能得分高。知识产权要和收入有关系。5、销售收入中的高新技术收入/营业总收入>60%​。

2024-02-13 13:11:52 1252

原创 【深度视觉】第十章:复现SOTA 模型:ResNet

十二、复现SOTA 模型:ResNet大名鼎鼎的残差网络ResNet是深度学习中的一个里程碑式的模型,也深度学习中的一个重要概念,几乎各类视觉任务中都能见到它的身影。不同于前面的经典模型,resnet一个深层网络,它是由来自Microsoft Research的4位学者何凯明、张翔宇、任少卿、孙剑共同提出的,论文是《Deep Residual Learning for Image Recognition》。前面我们一直说深层网络的效果比浅层好。这也是业界的一个共识,所以大家都在试图加深网络。但是

2024-01-26 22:39:57 1234

原创 【深度视觉】第九章:复现SOTA 模型:GoogLeNet

但是实际上googlenet在最后还是加了一个全连接层,但主要目的是为了方便以后如果分类的类别数目变了,大家可以通过微调finetune就可以迁移学习了,这个线性层并不承担传统意义上的全连接层的信息混合和特征间函数关系的学习,仅仅是充当的是一个分类的作用而已。此后的V4更是可以达到3%的错误率。另外,在后来的InceptionV3中,在不改变感受野同时减少参数的情况下,采用1*n和n*1的卷积核并联来代替InceptionV1-V2中n*n的卷积核(发掘特征图的高的特征,以及特征图的宽的特征)。

2024-01-26 22:24:59 979

原创 【深度视觉】第八章:复现经典架构:LeNet5、AlexNet、VGGNet、NiN

而且此后的方案都已经不是一些通用的方法来解决问题了,而是过度使用数据集中的特有特点,来降低错误率,这就相当于针对特定问题而解决问题,而不是找到一些通用方法解决普遍问题了,就是后来的架构可以在imgenet数据集上取得很好的效果,但在其他别的数据集上效果就没这么好了,相当于是进入了过拟合阶段,所以也就没必要继续刷错误率了。所以到这里才开始真正学架构。从上图可以看到,在2012年之前,ILSVRC大赛上的图像识别都是用的是机器学习的方法,比如特征提取+支持向量机的方式,每年比上年刷新1-2个百分点的进度提升。

2024-01-25 11:54:21 638

原创 【深度视觉】第七章:深度学习中的重要概念和思想碎碎念

(1)随机失活除了防止过拟合外,还有一个重要功能:我们知道每个神经的权值都是模型学习的模板(前面重点讲过,还写了一个小案例展示),当我们随机失活一些神经元,就是随机屏蔽掉一些模板,如果我们的模型还能有很好效果就说明,我们的模型学习了很多各个角度的模板,比如人脸识别,就是不仅学了脸上的眼睛模板还学了鼻子模板,还学了嘴巴模板,此时如果我们把眼睛挡住了,模型还是可以通过鼻子和嘴巴识别出这个人的脸。当模型优化完毕后,把测试集放到模型上预测,看模型对测试集的表现,如果表现和训练集差不多,就是你模型的泛化能力不错。

2024-01-24 12:57:29 843

原创 【深度视觉】第六章:优化算法GD、SGD、动量法、AdaGrad、RMSProp、Adam、AMSGrad

八、优化算法:GD、SGD、动量法、AdaGrad、RMSProp、Adam、AMSGrad优化算法是深度学习中的关键环节,我们经常说的炼丹主要指的就是这个环节。1、优化算法是解决什么的?优化算法的种类?我们已经知道,当样本数据正向传播一次,就会得到网络的一次预测,而网络的预测和样本标签又构成了我们的损失loss,我们的目标就是让loss最小化。一般我们都把loss看做上图1的山川。就是这个loss在有的维度上比较陡峭,同时在其他有的维度上比较平坦。而我们计算出loss时的网络参数w就是上图

2024-01-24 12:40:42 1204

原创 【深度视觉】第五章:卷积网络的重要概念及花式卷积

同时,上一个卷积层的数据和下一个卷积层的数据之间不是像DNN那样的全链接,而是上一层的部分信息和下一层的部分信息相关,因为下一层的信息是通过卷积核和上一层对应的感受野做点积传递到下一层的一个点上的。或者说,就是下一层的特征图上的某个数字只和它上一层特征图的对应位置的感受野范围内的数字相关,和上一层特征图其他位置的数值无关,所以是局部连接。不管你的图像是几乘几的尺寸、不管你有多少张这样的图像,这些张图像在用卷积核进行扫描提取特征的时候,参数都是卷积核尺寸里的几个参数乘以图像的张数,这么多个参数。

2024-01-22 23:16:27 1238

原创 【深度视觉】第四章:卷积神经网络架构

此外,我们前面说过,卷积操作的目的是把原图像的信息压缩提取数据特征,图像数据经过卷积层后被提取的特征的数据的大小就是最后一个卷积层输出的feature map和这些feature map的数量(通道数),然后我们将这些feature map的所有像素点拉平进入线性全连接层,所以在全连接层之前,我们能够从图像中提取多少信息就是我们的特征图的尺寸缩小到了什么样的水平,也就是原图图像整体像素缩小到了一个什么水平,而这个水平会严重影响卷积网络整体的预测效果和计算性能。二是,卷积核尺寸最好是奇数。

2024-01-21 10:41:48 1118

原创 【深度视觉】第三章:卷积网络诞生前:卷积、边缘、纹理、图像分类等

五、卷积网络诞生前:卷积、边缘、纹理、图像分类、卷积核的设计等前面第一章里面,已经讲过一点机器视觉的诞生史,但那都太久远,我觉得非常有必要把近期视觉发展的研究成果,也聊清楚,这对深入理解卷积网络是如何工作的非常有意义。在计算机视觉中,我们要处理图片就意味着,我们只要改变像素的取值即可改变图片。而如果我们要让计算机从图片中获取人类的语义信息,就需要计算这些图片的数字,并从中发现和提取数值规律,来解释和跨越人类和计算机之间的“语义鸿沟”,也就是要建立从像素到语义的映射关系。而这个问题的难点在于:比如

2024-01-20 12:42:37 1247

原创 【深度视觉】第二章:卷积网络的数据

四、卷积网络的数据上个系列我们详细讲解了pytorch框架下的全连接层神经网络DNN。本系列我们开始讲卷积神经网络CNN,Convolutional Neural Networks。上一章我截取了鲁鹏老师课件里面的一张图,详细展示了和计算机视觉相关的领域,显而易见,这门学科是一门交叉学科,所以尽管扩展你的知识域吧,比如,摄像设备性能,成像原理,图像数据的生成与获取,视频特效,3D,图像复原、图像分割、识别、几何、光学、信号处理等技术,你都要多多少少了解一些。1、卷积网络的数据结构我们还是从数据

2024-01-09 01:20:29 1550 1

原创 【深度视觉】第一章:知识体系框架介绍

因为人类是碳基生物,计算机是硅基生物,而且人类自己都没弄明白自己是怎么通过眼睛看到东西并回应的,而且计算机(摄像头)看到的东西和我们人类不一样啊,摄像头看到的都是数字而已,就是感光传感器根据光线的强弱,通过物理效应得到不同数量的光子,然后把每个像素的光子个数数一数而已。虽说这个bug是有利有弊的,利就是让我分辨的能力更强了,弊是,对于同一个客观存在的、不变的对象,可能不同的人、或者同一个人,在不同时空下看到的可能都是不同的!刚开始他们拿很多猫的食物,比如鱼什么的,让这些猫看,很失望,猫没反应。

2024-01-05 18:30:58 1371

原创 【深度学习】第六章:模型效果评估与优化

六、模型效果评估前面讲过,最初我们建模的目的就是预测,最早人们使用的是传统的数理统计分析建模,这是一套完整的理论,是建立在基本假设、总体、样本、抽样、估计、检验等概念框架之上,有一系列完整的数学方法和和数理统计工具去计算统计量,进而得到总体规律而形成的统计模型,然后用模型来进行预测。但是,机器学习和深度学习是没有这一套系统的理论框架的,机器学习和深度学习更像是一个实证类方法,评估一个模型的好坏看预测效果即可,预测效果好就是好模型,没人再追究你模型建立的前提假设是否合理、你总体服从什么分布等问题。也所

2024-01-04 14:10:14 1505

原创 【深度学习】第五章:再次回看网络架构-激活函数-损失函数-梯度下降

再看反向传播,当relu把这个神经元的输出变成0后,那反向传播时它的梯度就是0了,那就意味着这个神经元的参数得不到更新了,参数不更新,意味着下次正向传播时还是上一轮的参数,所以大概率还是被relu变成0,就表示这个神经元不再相应后面的数据了,参数也就一直更新不了,很难再活过来。所以线性层后必有激活层,即使架构图没有标出,你也要知道一定是要有激活层的。输出层的激活函数也是根据任务设置的,而且还可以灵活设置,就是如果你的输出层没有激活函数也是可以的,也是可以放到损失函数的计算过程中,这个看你怎么方便怎么来。

2024-01-03 13:14:26 747

原创 【深度学习】第四章:反向传播-梯度计算-更新参数

简单的说,求导就是求梯度,有了梯度就可以更新参数,更新了的新参数就是损失函数减小的一组参数,如此往复,就是模型学习样本数据,就是我们训练了模型。当损失函数小到我们可以接受的程度,此时的模型就是最优的模型,此时的模型就可以很好的帮我们人类预测样本了。我们计算loss关于w、b的偏导,从几何角度看,就是在loss函数的(w,b)点,找到了loss的切面,而沿着这个切面的反方向就是loss下降最快的方向,所以当(w,b)沿切面反方向走到(w',b')时,loss就变小了一点。从模型角度来说,就是模型学习的过程。

2023-12-30 19:38:06 1488

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除