- 博客(78)
- 收藏
- 关注
原创 装饰器模式
在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。在日常生活中,我们会遇到一种情景,买了新手机,给手机买个手机壳,装饰一下,手机壳不会改变手机原有功能,也不会影响到手机的工作,这种通过动态装饰扩展手机功能(保护功能、美观功能)的思想就是装饰模式的核心思想。Component:抽象构件,具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法,它的引入可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现客户端的透明操作。
2024-12-06 19:07:04 1020
原创 详解组合模式
有时候我们希望一个容器中只能有某些特定类型的对象,例如在某个文件夹中只能包含文本文件,使用组合模式时,不能依赖类型系统来施加这些约束,因为它们都来自于相同的抽象层,在这种情况下,必须通过在运行时进行类型检查来实现,这个实现过程较为复杂。Composite:容器构件,在组合结构中表示容器节点对象,容器节点包含子节点,其子节点可以是叶子节点,也可以是容器节点,它提供一个集合用于存储子节点,实现了在抽象构件中定义的行为,包括那些访问及管理子构件的方法,在其业务方法中可以递归调用其子节点的业务方法。
2024-12-06 19:05:17 560
原创 详解桥接模式
Implementor:实现类接口,定义实现类的接口,这个接口不一定要与Abstraction的接口完全一致,事实上这两个接口可以完全不同,一般而言,Implementor接口仅提供基本操作,而Abstraction定义的接口可能会做更多更复杂的操作。Abstraction:抽象类,用于定义抽象类的接口,一般是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implementor之间具有关联关系,既可以包含抽象业务方法,也可以包含具体业务方法。
2024-11-28 19:52:07 909
原创 适配器模式
日常生活中,我们总能遇到接口不兼容的情况。适配器中同时包含目标类和适配者类的引用,适配者可以通过适配器调用目标类的方法,目标类可以通过适配器调用适配者的方法,那么这个适配器是双向适配器,即适配器和目标类可以互相调用其中的方法。Adaptee:适配者类,即被适配的角色,定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。(1)由于适配器类是适配者类的子类,因此可以在适配器类中置换一些适配者的方法,使得适配器的灵活性更强。
2024-11-28 19:50:31 607
原创 深度学习基础—注意力模型
仔细想想我们人类是如何翻译句子的?可以这样理解e,它表示每次输出第i个翻译结果时我们要花费多大的注意力在激活值a,观察上图的网络结构可以发现,e显然和decoder的第i-1的翻译输出和encoder的第j个激活值有关,即a’和a。在翻译第一个词There的时候,注意力模型为不同的特征向量赋予不同的注意力,上下文附近可能注意力更高,远离的词可能注意力更低,把注意力的集中程度量化成注意力权重参数α,其中,Tx表示输入序列的长度,i表示第i个输出词的索引,j表示输入词的索引。
2024-11-17 14:45:33 611
原创 深度学习基础—Bleu得分
在二元组中,假设机器翻译的结果为:The cat the cat on the mat,则二元组有:The cat、cat the、the cat、cat on、on the、the mat(忽略大小写),the cat在参考翻译中出现的最大次数是1,cat the在参考翻译中出现的最大次数是0,cat on在参考翻译中出现的最大次数是1,on the在参考翻译中出现的最大次数是1,the mat在参考翻译中出现的最大次数是1,因此计算的准确率为所有二元组最大次数之和/二元组数量:4/6。
2024-11-16 16:00:15 502
原创 深度学习基础—Beam search集束搜索
注意:观察集束搜索算法,可以发现其搜索树相当于每次生成3*10000个结果(除了第一次生成外),然后剪枝,只保留3种概率最大的结果,即节省了计算,有能保证最好的结果没有被网络丢掉(一般来说最好的结果和概率最大的结果概率相差不会很远,合理的选择集束宽B的大小可以保证找到最优的结果)B越大,算法可选择的越多,结果越好,但计算更慢;说明集束搜索算法得到的使概率最大化的句子(y^)是使概率最大化的句子,但是y*显然是更好的句子,RNN应该输出的是y*的概率更大,此时RNN网络输出更差,更值得优化RNN网络。
2024-11-15 18:43:18 964
原创 深度学习基础—Seq2Seq模型
decoder网络和编号4的语言模型几乎一模一样,机器翻译模型其实和语言模型非常相似,不同在于语言模型总是以零向量开始,而encoder网络会计算出一系列向量来表示输入的句子。假设输入猫咪图片,经过预训练的AlexNet网络(上图编号2)作为编码器,让其学习图片的编码,去掉最后的softmax单元(编号3),AlexNet网络会输出一个4096维的特征向量。接着把这个向量输入到RNN中(编号4),RNN要做的就是生成图像的描述,和seq2seq解码器的结构相似,最终可以输出图片的描述。
2024-11-14 21:30:53 1103
原创 深度学习基础—词嵌入除偏
Debiasing Word Embeddings[J]. 2016.),最终会得到由上图从左到右的转变,通过调整词嵌入,减少性别偏见,使得“actress”和“actor”在语义空间中的表示更加公平,仅在性别方向上有差异,而在距离无偏轴上相等。词嵌入能够反映出性别、种族、年龄、性取向等其他方面的偏见,想要使用词嵌入模型来训练语言模型,进而让语言模型为我们做决策,除偏是非常必要的。对于上述定义不明确的词,我们要消除它们的性别偏见,即减少这些词到无偏见趋势的距离(编号2)。深度学习基础—了解词嵌入。
2024-11-12 20:27:33 838
原创 深度学习基础—学习词嵌入
但是算法有一个缺点:没考虑词序,像“Completely lacking in good taste, good service, and good ambiance.”,虽然good这个词出现了很多次,有3个good,如果忽略词序,仅把所有单词的词嵌入加起来或平均,最后的特征向量会倾向good的意思,分类器很可能认为这是一个好评,但是事实上这是一个差评,只有一星。生成多对上下文词-目标词的方式是选择一个上下文词,再选一个目标词(从上下文词的词距内选择),并给定标签为1(正样本),即上图第一行所示。
2024-11-10 21:55:58 671
原创 深度学习基础—了解词嵌入
现在如果我们想取某个词的词向量,可以用这个词的one-hot向量和矩阵做乘法,由于矩阵是4*6,而one-hot向量是6*1,因此得到的结果是4*1,而one-hot向量只有这个词的位置是1,其他全是0,因此最终可以得到4*1的词向量,即E中的这个词对应的一列。比较两个结果会发现,它们的差都约等于右边的向量,这个结果表示man和woman之间的差异主要是性别Gender的差异,king和queen之间的差异也是性别的差异,由此我们可以得到,类比man对woman,可以推理出king对queen。
2024-11-09 16:10:38 494
原创 详解原型模式
注意:如果出现层层调用的类,那么要实现深拷贝,就需要为每一个类都实现Cloneable接口,通俗来讲就是:你现在拷贝的对象(克隆对象1)引用类型的值(引用对象1)是引用的地址对吧,没问题,我拷贝一个引用类型的新对象(引用对象1的克隆对象),这个新对象和引用地址的对象不是同一个对象,你现在指向这个新对象,此时这个克隆对象1就完成了深拷贝。(Object类是抽象原型类)深拷贝:拷贝值和引用的对象,也就是说如果是引用类型,那么拷贝的是一个独立的对象,修改克隆对象中引用类型的对象,不会影响原对象的引用类型变量。
2024-11-06 16:25:29 866
原创 深度学习基础—双向RNN和深层RNN
要识别Teddy是否是人名的一部分,普通RNN在第3个时间步时只能学习到Teddy以前的内容,而比较关键的词在第4个时间步,因此要想解决这个问题,就需要让网络有预知“未来”的能力,双向循环神经网络正是有这样能力的结构。a[2]<3>接受两个输入,第一层同一个时间步3的激活值和第二层上一个时间步2的激活值,然后传递给下一个时间步和下一层,由于这样的结构,构建的深层RNN学习能力也更强大。因此,对于每一个时间步的输出,我们不仅考虑了过去的信息,也考虑的未来的信息,这对于人名识别的准确率将会大大提升。
2024-11-05 20:57:18 389
原创 建造者模式
Director:指挥者又称为导演类,负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可以在其construct()建造方法中调用建造者对象的部件构造与装配方法,完成复杂对象的建造。而在建造者模式中,客户端可以不直接调用建造者的相关方法,而是通过指挥者类来指导如何生成对象,包括对象的组装过程和建造步骤,它侧重于一步步构造一个复杂对象,返回一个完整的对象(侧重于组装过程)。Product:产品角色,它是被构建的复杂对象,包含多个组成部件,具体建造者创建该产品的内部表示并定义它的装配过程。
2024-11-05 14:37:43 938
原创 深度学习基础—循环神经网络的梯度消失与解决
那么这中间的时间步中更新门对应的位置都应该是0,表示不更新,然后在时间步7更新门对应的位置是1,表示更新,此时就会把cat单数的情况告诉这个单元,网络就有了捕捉长期依赖关系的能力,也解决了梯度消失的问题。实际上,基本的RNN模型会有很多局部影响,比如y3这个输出(上图编号9所示)主要受y3附近的值(上图编号10所示)的影响,上图编号11所示的一个数值主要与附近的输入(上图编号12所示)有关,上图编号6所示的输出,基本上很难受到序列靠前的输入(上图编号10所示)的影响。结合这三个值计算三个门值。
2024-11-03 19:39:38 838
原创 详解单例模式
答案:第二条if判断必不可少,因为多线程的环境下,可能有多个线程进入到第一条if语句中,等待解锁,如果没有第二条if语句,在某个线程第一次创建实例后,其他等待的线程拿到锁会直接创建实例,又造成了多个实例的错误。(3)现在很多面向对象语言(如Java、C#)的运行环境都提供了自动垃圾回收的技术,因此,如果实例化的共享对象长时间不被利用,系统会认为它是垃圾,会自动销毁并回收资源,下次利用时又将重新实例化,这将导致共享的单例对象状态的丢失。懒汉模式:类加载的时候不创建实例,第一次使用时才创建实例。
2024-11-03 17:47:39 796
原创 深度学习基础—序列采样
在第1个时间步,输入a0=0和x1=0,则第1个时间步可能会输出一个经过softmax层的概率向量,向量的每个元素表示是词典中某个词的概率,我们可以对概率向量随机采样,比如使用Python中numpy库的np.random.choice语句,获得一个词,这个词就是采样的第一个词。如果对这样的RNN进行序列采样,那么我们每一个时间步的输入不再是词,而是字符。当训练了一个序列模型后,如果我想要了解模型学习到的内容,就需要进行序列采样,序列采样最终会得到一个生成的序列,我们就可以知道模型学到的内容。
2024-11-02 21:54:57 979
原创 一个系列搞懂23种设计模式
本文是这一专栏的目录,设计模式的学习资料来自于刘伟老师的《Java设计模式》,结合我学习的理解,便有了这一系列,。对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对应单一职责原则。即创建什么?由谁创建?何时创建?(5种)
2024-11-02 17:36:41 714
原创 抽象工厂模式
举个例子:在小米和华为统治的电子产品市场下,现在vivo也想竞争,vivo也研发手机和电脑,因此在原有市场基础下(系统),新增的vivo产品族(vivo品牌的产品构成vivo产品族)并不会影响小米工厂和华为工厂的生产线的修改(生产线相当于生产产品的具体工厂),只需要vivo自己建立工厂,自己生产产品就行,即优点(3)。具体工厂角色,它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。
2024-11-02 17:31:24 936
原创 工厂方法模式
简单工厂模式一旦添加新的产品,就需要更改工厂类的代码逻辑,违反开闭原则,但是工厂方法模式把产品的实例化推给工厂类的子类,这样即使新增加产品,无需更改工厂类的代码,只需新增实例化该产品的子类,更加符合开闭原则。工厂方法模式(Factory MethodPattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
2024-11-02 17:30:54 1002
原创 简单工厂模式
抽象产品角色,即抽象类,它是工厂类所创建的所有对象的父类,封装了各种产品对象的公有方法,它的引入将提高系统的灵活性,使得在工厂类中只需定义一个通用的工厂方法,因为所有创建的具体产品对象都是其子类对象。(1)工厂类的工厂方法包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的职责,而仅仅“消费”产品,简单工厂模式实现了对象创建和使用的分离。工厂类,内部实现工厂方法,接受参数arg,根据参数的值创建不同的具体产品对象,返回抽象产品类Shape。
2024-11-02 17:30:18 673
原创 深度学习基础—语言模型和序列生成
(pear和pair是近音词)。一个语音识别模型可能算出第一句话的概率是10^(-13),而第二句话的概率是10^(-10),比较这两个概率值,显然那个人说的是第二句话,因为第二句话的概率比第一句高出1000倍。第一个softmax层会告诉我们y1的概率为p(y1),然后第二个softmax层会告诉我们考虑y1出现的情况下的概率为p(y2|y1),然后第三个softmax层告诉我们考虑y1和y2出现的情况下的概率p(y3|y1,y2),把这三个概率相乘,最后得到这个含3个词的整个句子的概率。
2024-10-31 21:47:22 664
原创 深度学习基础—循环神经网络(RNN)
假设建立一个能够自动识别句中人名位置的序列模型,它的输入序列是这样的:“Harry Potter and Herminoe Granger invented a new spell.”,(这些人名都是出自于J.K.Rowling笔下的系列小说Harry Potter)。输出y,使得输入的每个单词都对应一个输出值,同时这个能够表明输入的单词是否是人名的一部分。注:这是一个命名实体识别问题,常用于搜索引擎,比如说索引过去24小时内所有新闻报道提及的人名,用这种方式就能够恰当地进行索引。
2024-10-31 21:41:03 954
原创 深度学习基础—神经风格迁移
k和k’表示不同的通道,i和j表示某个通道下的激活值的坐标,a表示该下标下的激活值,即该公式将(i,j,k)和(i,j,k’)下标的激活值相乘,然后累加求和,得到矩阵G的(k,k’)下标的元素,从而得到nc*nc维度的矩阵G(因为有nc个通道,因此k和k’分别都可取nc个值,因此矩阵的维度是nc*nc)。将绘画的风格迁移到真实建筑图片中,得到具有绘画风格的建筑图片。第二层检测到更复杂的形状和模式,比如编号1的隐藏单元,检测到很多垂线的垂直图案,编号2似乎检测到在左侧有圆形图案,编号3检测到细的垂线或斜线。
2024-10-14 21:59:58 871
原创 深度学习基础—人脸识别
假设数据库只有4张照片,编号1是需要验证的照片,她和左列第二个人是同一个人,识别系统应该能认出来,但是编号2这个人不存在数据库中,系统应该识别不出来,那通常情况下,数据库中只保存一个人的一张照片,而不是多张,经验告诉我们,用一张照片作为训练集,训练的网络表现很差(欠拟合),如何用一个人的一张照片就可以训练出健壮的网络就是One-Shot学习的目的。现在用这三张照片构成两组对比,(A,P)和(A,N),我们希望d(A,P)值很小,因为他们是同一个人,而d(A,N)值很大,因为他们不是同一个人。
2024-10-09 10:42:40 1285
原创 深度学习基础—Anchor Boxes与YOLO 算法
上图所示,现在处理绿色边框的格子外,其他边框的标签都是中间那个向量,而绿色边框的格子有汽车,假设这个汽车与anchor box 2的交并比最大(编号5,紫色长方形框),因此绿色边框的格子的标签是最右边的向量(anchor box 1对应的分量的pc=0),然后根据红色边框(编号3来编码真实边框的参数,也就是右边向量的红色部分)。假设输入的图片是100*100*3,那么经过卷积网络的训练后,得到的输出为3*3*16,3*3依次对应网格的3*3划分的区域,16表示每个网格单元对应的输出的长度为16的预测向量。
2024-10-07 15:58:44 1185
原创 深度学习基础—交并比与非极大值抑制
实际上,可能1、2、3、4、5、6编号的格子都认为自己的区域有车,出现了多个定位,而图片中只有两辆车,应该只有两个定位,因此可以使用非极大值抑制算法,将汽车分类概率最高的格子保留,同一辆汽车的其他低分类概率的格子的定位删除。loU越高,边界框越精确。以上图为例,首先去除小于0.6的边框后剩余的边框均用蓝色表示,选择最大的概率的边框0.9,高亮该边框,计算与该边框重叠的边框0.6和0.7,发现交并比均大于0.5,因此需要删去,这里选择较暗的蓝色表示抑制。于是最终检测出两个汽车对象,即高亮框的范围。
2024-10-06 17:41:14 684
原创 深度学习基础—目标检测算法
找到全连接层和前一层,用5*5的过滤器来实现卷积层的转化,数量是400个(编号1所示),输入图像大小为5*5*16,用5*5的过滤器对它进行卷积操作,过滤器实际上是5*5*16,因为在卷积过程中,过滤器会遍历这16个通道,所以这两处的通道数量必须保持一致,输出结果为1*1。再添加另外一个卷积层(编号2所示),这里用的是1*1卷积,假设也有400个1*1的过滤器,在这400个过滤器的作用下,下一层的维度是1*1*400,这其实就是上个网络中的这一全连接层(400个神经元)。如何把这些全连接层转化为卷积层?
2024-10-05 17:50:03 1364
原创 深度学习基础—目标定位与特征点检测
在图片分类问题中,卷积神经网络的输出的特征向量会经过softmax单元,并最终输出类别,如果正在构建汽车自动驾驶系统的网络,那么对象可能包括以下几类:行人、汽车、摩托车和背景,这意味着图片中不含有前三种对象,也就是说图片中没有行人、汽车和摩托车,输出结果会是背景对象,这四个分类就是softmax函数可能输出的结果。注意:特征点的特性在所有图片中必须保持一致,就好比,特征点1始终是右眼的外眼角,特征点2是右眼的内眼角,特征点3是左眼内眼角,特征点4是左眼外眼角等等。
2024-10-04 20:52:49 856
原创 深度学习基础—残差网络ResNets
假设W[l+2]和b[l+2]的值为0,此时进行Relu激活函数后a[l+2]=a[l]。在a[l]前进行一次矩阵运算,保证Wsa[l]的输出维度和要运算的上一层输出维度一致,比如z[l+2]是256大小的向量,而a[l]的大小是128,就可以把Ws的大小固定为256*128,此时维度就保证了一致,然后把Ws作为参数进行学习。对于网络的一层,原本的操作是先进行权重参数的线性组合,在进行激活函数的计算。但是,我们的目的是让网络有更好的表现,如果残差块的神经元学习到一些有用的信息,就会为网络带来更好的表现。
2024-10-03 20:00:49 903
原创 深度学习基础—卷积神经网络示例
在之前的博客《深度学习—简单的卷积神经网络》,仅由卷积层构成网络的全部,这还不是标准的网络结构,本文将继续介绍标准的卷积神经网络结构有哪些?深度学习基础—简单的卷积神经网络假设需要进行手写数字识别,输入图片是32*32*3大小的RGB图片,下面我们来构建一个卷积神经网络实现这个功能:注:该网络和经典网络LeNet-5非常相似,灵感也来源于此。LeNet-5是多年前Yann LeCun创建的,但是我们所采用的模型并不是LeNet-5,但是受它启发,许多参数选择都与LeNet-5相似。
2024-10-02 21:47:02 990
原创 深度学习基础—池化
最大池化的直观理解就是区域内最大值可能就是我们想要提取的重要特征,比如边缘检测,通常边缘附近是数值变化较大的地方,比如由亮变暗,像素值由大变小,如果过滤器覆盖了边缘,就会找到像素值大的特征值提取出来,从而保留重要的边缘信息,减少不是边缘的冗余信息。假设输入的图片是4*4的灰度图片(二维,只有一个通道),过滤器选择2*2,步长选择2,这样的效果就是将4*4的图片分为4块,因此结果是2*2的图像。由于卷积运算的重叠性,很多计算的特征是冗余的,而池化就可以将较大且特征较弱的图转化为较小且特征较强的图。
2024-08-30 11:40:02 825
原创 深度学习基础—简单的卷积神经网络
第l层的输入是第l-1层的输出,nH[l-1]和nW[l-1]表示第l层输入的图片的高和宽(不一定是正方形图片),由于l-1层有几个过滤器,最后输出的图片就有几个通道,因此l层的输入图片的通道数等于l-1层的过滤器的数量。假设当前位于l层,则输入6*6*3的彩色图片,有两个3*3*3的过滤器,卷积操作后将输出2个4*4的图片。假设输入的彩色图片为x,大小是39*39*3,在第一层中,过滤器有10个,每个大小为3*3*3(通道数和输入的通道数相同),步长为1,没有填充,则输出的结果是37*37*10。
2024-08-29 21:21:46 708
原创 深度学习基础—彩色图片的卷积运算
即假设输入图片是n*n*nc的大小,过滤器是f*f*nc的大小,得到的卷积结果是(n-f+1)*(n-f+1)*nc,其中nc是通道数,这里默认步长为1,不进行padding操作。但是如果想检测不同的边缘特征,比如想同时检测6*6 RGB图像垂直边缘和水平边缘,就可以使用2个3维过滤器(3*3*3),得到两个4*4的输出,把这两个4*4的输出堆叠为4*4*2的输出,这个输出表示同时检查水平和垂直边缘的结果。把这三个过滤器堆叠到一起形成3维过滤器,从而就可以只检测红色的边缘,绿色和蓝色不进行检测。
2024-08-28 16:56:41 633
原创 深度学习基础—卷积运算
在计算机视觉领域,卷积运算撑起了半边天,因此在学习计算机视觉前,首先来了解一下卷积运算是如何运算的。假设正在进行边缘检测,垂直边缘检测会把图片中接近垂直的边缘提取出来,即人的侧边、栏杆等。而水平边缘检测会把图片中接近水平的边缘提取出来,即横杆、自行车轮的上侧等。现在以垂直边缘检测为例,解释一下卷积运算是如何进行的?卷积运算用*符号表示,一张图片表示的矩阵*一个过滤器(或被称为核,在图像处理领域又被称为滤波器)=新的图片表示的矩阵。
2024-08-28 16:52:20 1139
原创 深度学习基础—迁移学习、多任务学习和端对端学习
多任务之间通常具有一定程度的相似性,因此数据之间也可以提供一定的帮助,比如某个任务只有1000个样本,需要进行100个任务,但如果只专注于第100个任务的学习,那么网络只有1000个样本,利用上其余99个任务的数据,在多任务数据量接近的情况下,就多了99000个样本,对网络的性能就有大幅提升。假设需要进行无人驾驶汽车模型的训练,对于一个图片,需要同时识别出图片中的汽车、行人、告示牌、交通信号灯,如果不进行多任务学习,就需要训练4个网络,而多任务学习只需要训练1个网络就可以完成4个任务。
2024-08-26 10:28:50 1002
原创 深度学习基础—结构化机器学习项目
机器学习项目的发展是随着时间的增加,模型的性能逐渐上升,但是并不是无限上升,而是在一定程度后,趋于平缓,这个一定程度就是指人类水平表现和贝叶斯最优错误率之间。如下图所示,紫色的线就是机器学习项目准确率的曲线,而蓝色的线是人类水平表现的准确率线,绿色的线是贝叶斯最优错误率的线。贝叶斯最优错误率是指理论上所能达到的最优错误率,没有任何办法设计一个函数可以达到最优错误率。人类水平表现是指人类能达到的错误率,对于自然感知领域,人类的准确率是比较高的,因为人擅长听、看等,因此人类水平表现距离贝叶斯最优很近。
2024-08-26 10:28:33 788
原创 深度学习基础—Softmax回归
通常对于二分类问题,大家熟知的模型就是logistic回归。那么对于多分类问题呢?如果要多分类,我们可以在网络的最后一层建立多个神经元,每个神经元对应一个分类的输出,输出的是某一个分类的概率,这些概率之和为1。要想做到上述分析,就需要由Softmax激活函数组成的Softmax回归模型来解决。
2024-08-22 00:30:14 547
原创 深度学习基础—Batch Norm
对于一个神经网络我们知道,归一化输入特征是加速网络训练的技巧之一,因为归一化后,损失函数的图像就会由狭长变得更圆,那么这是否启发我们,在深度更深模型中,对各层的输出进行归一化,有益于下一层的学习?毕竟上一层的输出是下一层的输入。这就是由于每一层的参数更新后,对于同一输入,输出的分布就会发生改变(这称之为),这带来的影响是下一层需要不断适应上一层输出的分布,从而导致下一层与上一层之间的联系紧密(有点过拟合的意思),通过归一化就可以加强层与层之间的独立性,从而加速网络的学习。
2024-08-20 20:18:53 1228
原创 深度学习基础—超参数调试
在训练深度网络最难的事情之一是超参数的选择,如何选择合适的超参数取值?下面我将谈谈,如下是我所理解的超参数调试顺序:重要性排序超参数Top1梯队学习率aTop2梯队min-batch大小,隐层神经元个数,动量梯度下降法参数bTop3梯队隐层层数,学习衰减率,Adam优化的参数b1、b2ℇ实际上,Adam优化的参数b1、b2、ℇ通常不进行调试,选择默认值就能有很好的效果,即b1=0.9、b22.核心思想如何选择合适超参数值?与其说是选择,不如说是实验。
2024-08-19 23:50:52 2223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人