![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习深度学习
文章平均质量分 84
深度学习的知识的整理总结
loyd3
不加微信捏
展开
-
【深度学习】7-0 自制框架实现DeZero - 自动微分
介绍下处理深度学习的框架DeZero,通过这个框架来了解自动微分是如何实现的指的是自动求出导数的做法(技术)。“自动求出导数”是指(而非人)求出导数。具体来说,它是指在对某个计算(函数)编码后计算机会自动求出该计算的导数的系统。自动微分。这是一种采用链式法则求导的方法。我们对某个函数编码后,可以通过自动微分高效地求出高精度的导数。反向传播也是自动微分的一种。反向传播相当于反向模式的自动微分。自动微分是用计算机求导的一种方法。深度学习框架中实的是反向模式的自动微分。原创 2023-06-28 09:42:22 · 839 阅读 · 0 评论 -
【深度学习】6-4 卷积神经网络 - CNN的实现
训练数据的识别率为 99.82%,测试数据的识别率为 98.96%,测试数据的识别率大约为 99%,就小型网络来说,这是一个非常高的识别率。在求损失函数的loss方法中,除了使用predict方法进行的forward处理之外,conv_param——卷积层的超参数(字典)。这里,卷积层的超参数通过名为 conv_param的字典传入。input_dim——输入数据的维度:(通道,高,长)hidden_size——隐藏层(全连接)的神经元数量。output_size——输出层(全连接)的神经元数量。原创 2023-06-22 21:53:03 · 1568 阅读 · 0 评论 -
【深度学习】6-3 卷积神经网络 - 卷积层和池化层的实现
比如,(10, 3, 5, 5) 形状的数组的元素个数共有 750 个,指定 reshape(10,-1)后,就会转换成 (10, 75) 形状的数组。卷积运算的滤波器处理的细节:将滤波器纵向展开为 1 列,并计算和 im2col 展开的数据的矩阵乘积,最后转换(reshape)为输出数据的大小。像这样,CNN 中处理的是 4 维数据,因此卷积运算的实现看上去会很复杂,但是通过使用下面要介绍的 im2col这个技巧,问题就会变得很简单。在上图中,为了便于观察,将步幅设置得很大,以使滤波器的应用区域不重叠。原创 2023-06-22 21:50:36 · 1194 阅读 · 0 评论 -
【深度学习】6-2 卷积神经网络 - 池化层
此外,这个例子中将步幅设为了2,所以2x2的窗口的移动间隔为2个元素。另外,一般来说,池化的窗口大小会和步幅设定成相同的值。比如,3x3的窗口的步幅会设为3,4x4的窗口的步幅会设为4等。相对于Max池化是从目标区域中取出最大值,Average池化则是计算目标区域的平均值。比如,3 × 3 的池化的情况下,如上图所示,池化会吸收输入数据的偏差(根据数据的不同,结果有可能不一致)。上面的例子是按步幅2进行2x2的Max池化时的处理顺序。比如下图,将2 x 2的区域集约成1个元素的处理,缩小空间大小。原创 2023-06-22 21:43:36 · 432 阅读 · 0 评论 -
【深度学习】6-1 卷积神经网络 - 卷积层
在上图的批处理版的数据流中,在各个数据的开头添加了批用的维度。之前的全连接神经网络的实现也对应了批处理,通过批处理,能够实现处理的高效化和学习时对 mini-batch 的对应。CNN 中,滤波器的参数就对应之前的权重。这里,假设输人大小为(H,W),滤波器大小为(FH,FW),输出大小(OH,OW),填充为P,步幅为S。当输入数据是图像时,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。在进行卷积层的处理之前,有时要向输人数据的周围填入固定的数据(比如0等),这称为。原创 2023-06-22 09:25:04 · 3106 阅读 · 0 评论 -
【深度学习】5-5 与学习相关的技巧 - 超参数的验证
然后,多重复该操作,观察识别精度的结果,根据这个结果缩小超参数的“好值”的范围通过重复这一操作,就可以逐渐确定超参数的合适范围。于是,在超参数的最优化中,减少学习的epoch,缩短一次评估所需的时间是一个不错的办法。在该实验中,权值衰减系数的初始范围为10的负8次方到10的负4次方学习率的初始范围为10的负6次方到10的负2次方。反复进行上述操作,不断缩小超参数的范围,在缩小到一定程度时,从施围中选出一个超参数的值。有报告叫显示,在进行神经网络的超参数的最优化时,与网格搜索等有规律的搜索相比,原创 2023-06-21 13:25:29 · 316 阅读 · 0 评论 -
【深度学习】5-4 与学习相关的技巧 - 正则化解决过拟合(权值衰减,Dropout)
过拟合指的是只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据的状态。像这样,通过使Dropout,即便是表现力强的网络,也可以抑制过拟合。虽然训练数据的识别精度和测试数据的识别精度之间有差距,但是与没有使用权值衰减的结果相比,差距变小了。训练时,每传递一次数据,就会随机选择要删除的神经元然后,测试时,虽然会传递所有的神经元信号,但是。因此,在求权重梯度的计算中,要为之前的误差反向传播法的结果加上正则化项的导数。并且,推理时,通过对神经元的输出乘以删除比例(比如,0.5等),可以取得。原创 2023-06-21 13:22:17 · 1243 阅读 · 0 评论 -
【深度学习】5-3 与学习相关的技巧 - Batch Normalization
顾名思义,以进行学习时的mini-batch为单位,按mini-batch进行正规化。首先,使用MNIST数据集,观察使用Batch Norm层和不使用Batch Norm层时学习的过程会如何变化,这个式子所做的是将mini-batch的输人数据变换为均值为0,方差为1的数据。Batch Norm的思路是调整各层的激活值分布使其拥有适当的广度。接着,Batch Norm层会对正规化后的数据进行缩放和平移的变换用数学式可以如下表示。综上,通过使用Batch Norm,可以推动学习的进行。原创 2023-06-21 13:09:33 · 1464 阅读 · 0 评论 -
【深度学习】5-2 与学习相关的技巧 - 权重的初始值
这样一来,正向传播时,因为输人层的权重为0,所以第2层的神经元全部被传递相同的值。Xavier的论文中,为了使各层的激活值呈现出具有相同广度的分布,推导了合适的权重尺度。,神经网络可以进行高效的学习。相反,当权重初始值为Xavier初始值和He初始值时,学习进行得很顺利并且,我们发现He初始值时的学习进度更快一些。现在,在一般的深度学习框架中,Xavier初始值已被作为标准使用,比如,Cafe框架中,通过在。使用Xavier初始值后,前一层的节点数越多,要设定为目标节点的初始值的权重尺度就越小。原创 2023-06-21 10:38:35 · 1212 阅读 · 0 评论 -
【深度学习】5-1 与学习相关的技巧 - 参数的更新(Momentum,AdaGrad, Adam )
神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为。但是神经网络的最优化问题非常难。这是因为参数空间非常复杂,无法轻易找到最优解。而且,在深度神经网络中,参数的数量非常庞大,导致最优化问题更加复杂。原创 2023-06-20 14:54:20 · 1998 阅读 · 1 评论 -
【深度学习】4-4 误差反向传播法 - 算法的具体实现
因此,神经网络的正向传播只需按照添加元素的顺序调用各层的forward()方法就可以完成处理,而反向传播只需要按相反的顺序调用各层即可。受到数值精度的限制,刚才的误差一般不会为0,但是如果实现正确的话,可以期待这个误差是一个接近0的很小的值。数值微分的计算很耗费时间,而且如果有误差反向传播法的话,就没有必要使用数值微分的实现了。之后,通过各个层内部实现的正向传播和反向传播,就可以正确计算进行识别处理或学习所需的梯度。现在来进行神经网络的实现。下面来看一下使用了误差反向传播法的神经网络的学习的实现。原创 2023-06-20 13:34:46 · 1137 阅读 · 0 评论 -
【深度学习】4-3 误差反向传播法 - Affine/Softmax层的实现
如图所示,Softmax 层将输入 正规化,Cross Entropy Error 层接收 Softmax 的输出 和教师标签 ( t。这里要特别注意矩阵的形状,因为矩阵的乘积运算要求对应维度的元素数保持一致,通过确认一致性。)正是 Softmax层的输与监督标签的差,直截了当地表示了当前神经网络的输出与监督标签的。神经网络的反向传播会把这个差分表示的误差传递给前面的层,这是神经网络学习中的重要性质。因此,必须将神经网络的输出与监督标签的误差高效地传递给前面的层。注意的是反向传播的结果。原创 2023-06-20 13:15:08 · 975 阅读 · 0 评论 -
【深度学习】4-2 误差反向传播法 - 简单层的实现(层的介绍)
下面把构建神经网络的“层”实现为一个类。这里所说的“层”是神经网络中功能的单位。下面先从一些简单的层开始介绍。原创 2023-06-20 13:00:26 · 718 阅读 · 0 评论 -
【深度学习】4-1 误差反向传播法 - 计算图&链式法则&反向传播
介绍链式法则时,要先从。原创 2023-06-20 09:35:02 · 1738 阅读 · 0 评论 -
【深度学习】3-4 神经网络的学习- 学习算法的实现
比如,对于10000笔训练数据,用大小为100笔数据的mini-batch进行学习时,重复随机梯度下降法100次有的训练数据就都被“看过”了。,因此,要评价神经网络的泛化能力,就必须使用不包含在训练数据中的数据。神经网络的学习的实现使用的是前面介绍过的mini-batch学习。深度学习的很多框架中,随机梯度下降法一般由一个名为。神经网络的学习中,必须确认是否能够正确识别训练数据以外的其他数据,即确认是否会发生过拟合。是指,虽然训练数据中的数字图像被正确辨别,但是不在训练数据中的数字图像却无法被识别的现象。原创 2023-06-20 09:13:47 · 2083 阅读 · 0 评论 -
【深度学习】3-3 神经网络的学习- 导数&梯度
这里,假定想参数输入了一个NumPy数组,函数的内部实现比较简单,先计算 NumPy 数组中各个元素的平方,再求它们的和。因此,在寻找函数的最小值(或者尽可能小的值)的位置的任务中,点(3,4)处的梯度是(6,8),点(0.2)处的梯度是(0,4),点(3,0)处的梯度是(6,0)。式子的左边,表示f(x)关于x的导数,即f(x)相对于x的变化程度。求这个式子的导数,这里需要注意的是,这个式子有两个变量,所以有必要区分对哪个变量求导数。因此,无法保证梯度所指的方向就是函数的最小值或者真正应该前进的方向。原创 2023-06-20 08:58:05 · 3675 阅读 · 0 评论 -
【深度学习】3-2 神经网络的学习- mini-batch学习
使用训练数据进行学习,就是针对训练数据计算损失函数的值,也就是说,训练数据有100个的话,就要把这 100个损失函数的总和作为学习的指标。要实现对应mini-batch的交叉误差,需要改良之前实现的单个数据的交叉熵误差,让它可以同时处理单个数据和批量数据(数据作为batch集中输人)y的维度为1时,即求单个数据的交叉熵误差时,需要改变数据的形状。因为t中标签是以[2,7,0,9,4]的形式存储的,所以。在以大数据为对象求损失函数的和,需要花费较长的时间,因此,我们从全部数据中选出一部分,原创 2023-06-19 15:01:09 · 1264 阅读 · 0 评论 -
【深度学习】3-1 神经网络的学习- 学习基础/损失函数
此时,对该权重参数的损失函数求导,表示的是“如果稍微改变这个权重参数的值,损失函数的值会如何变化”。反过来,如果导数的值为正,则通过使该权重参数向负方向改变,可以减小损失函数的值。这里加上了微小值delta,是因为当出现np.log(0)时,np.log(0)会变成负无穷大-inf,这样导致后面无法计算,为了避免出现这样的情况,所以添加这个微小值。在实现数字“5”的识别问题中,神经网络直接学习图像本身,而在神经网络中,图像中包含的重要特征量也都是由机器来学习的。作为激活函数的阶跃函数也有同样的情况。原创 2023-06-19 14:25:31 · 1173 阅读 · 0 评论 -
【深度学习】2-5 神经网络-批处理
为此,可以把的形状改为100 x 784,将100张图像打包作为输人数据。,要注意的是这里给定了axis =1,也意味着在100 x 10的数组中,沿着第1维方向(以第1维为轴)找到值最大的元素的索引(用图表示,可以发现,多维数组的对应维度的元素个数确实是一致的。此外,还可以确认最终的结果是输出元素个数为10的一维数组。:将训练数据划分成多个批次时,应该保证每个批次的样本分布相似,避免训练出现偏差。:批处理的使用可能会对学习率的选择产生影响,需要对学习率进行相应的调整。批处理对计算机的运算大有利处,原创 2023-06-16 16:03:22 · 1961 阅读 · 0 评论 -
【深度学习】2-4 神经网络-手写数字识别
MNIST是机器学习最有名的数据集之一,被应用于从简单的实验到发表的论文研究等各种场合,在阅读图像识别或机器学习的论文时,MNIST数据集经常作为实验用的数据出现。预处理在神经网络(深度学习)中非常实用,实际上,很多预处理都会考虑到数据的整体分布,比如,利用数据整体的均值或标准差,移动数据,使数据整体以0为中心分布。在实现对手写数字图像的分类,可以先假设学习已经全部结束,我们使用学习到的参数,先实现神经网络的“推理处理”。MINIST数据集是由0到9的数字图像构成的,MNIST数据集的使用方法是,原创 2023-06-16 14:53:24 · 1854 阅读 · 0 评论 -
【深度学习】2-3 神经网络-输出层设计
前馈神经网络(Feedforward Neural Network),之前介绍的单层感知机、多层感知机等都属于前馈神经网络,它之所以称为前馈(Feedforward),或许与其信息往前流有关:数据从输入开始,流过中间计算过程,最后达到。并且,softmax函数的输出值的总和是1。正是因为softmax函数的输出值的总和都是1,所以可以用概率(统计的)方法处理问题。是根据某个输入预测一个(连续的)数值的问题,例如根据一个人的图像预测这个人的体重。,那当然是原封不动的输出是最好的。softmax函数的分子是。原创 2023-06-16 14:33:53 · 2552 阅读 · 0 评论 -
【深度学习】2-2 神经网络 - 前向传播实现3层神经网络
例如我们根据一个地区的若干年的PM2.5数值变化来估计某一天该地区的PM2.5值大小,预测值与当天实际数值大小越接近,回归分析算法的可信度越高。隐藏层的加权和(加权信号和偏置的总和)用a表示,被激活函数转换后的信号用z表示。此外,图中h()表示激活函数,这里我们使用的是sigmoid函数。如果使用矩阵的乘法运算,则可以将第1层的加权和表示成下面的式子。权重右下角按照“后一层的索引号、前一层的索引号”的顺序排列。另外要注意的是,在下图中输出层的激活函数用 σ()**上标 (1)**表示的是第1层的权重。原创 2023-06-16 13:37:41 · 2133 阅读 · 0 评论 -
【深度学习】2-1 神经网络 - 激活函数
这个运算会进行y(z)=c x c x c x X的乘法运算,但是同样的处理可以由y(z)=az(注意a=c3)这一次乘法运算(即没有隐藏层的神经网络)来表示。,因它们的导数都小于1,尤其是sigmoid的导数在[0,1/4]之间,多层叠加后,根据微积分链式法则,随着层数增多,导数或偏导将指数级变小。所以层数较多的激活函数需要考虑其导数不宜小于1,当然导数也不能大于1,大于1将导致梯度爆炸,导数为1最好,激活函数relu正好满足这个条件。如果没有激活函数,那么再多层的神经网络也只能处理线性可分问题。原创 2023-06-16 10:31:50 · 2158 阅读 · 0 评论 -
【深度学习】1 感知机(人工神经元)
输入信号被送往神经元时,会被分别乘以固定的权重。神经元会计算传送过来的信号的综合,只有当这个综合超过了某个界限值时,才会输出1。输出层里的“输出单元”则需要对前面一层的输入进行计算。用前面介绍的感知机是无法实现这个异或门的,因为异或门是非线性的而感知机只能表示由一条直线分割的空间。在感知机中,“输入”也作为神经元节点,标为“输入单元”。将最左边的列称为第0层,中间的一列称为第1层,最右边的一列称为第2层。0对应“不传递信号”,1对应“传递信号”。,仅当x1或x2中的一方为1时,才会输出1。原创 2023-06-15 09:19:20 · 1686 阅读 · 0 评论 -
【深度学习】0-2 深度学习相关数学概念的简单总结-概率与信息论
样本空间是一个实验或随机试验,随机试验中的每个可能结果称为样本点。例如投掷一个骰子,那么样本空间就是{1,2,3,4,5,6}。随机变量,顾名思义,就是“”的变量,一个随机试验有许多可能结果,到底出现哪个预先是不知道的,。如掷骰子,掷出的点数X是一个随机变量,它可以取1、2、3、4、5、6中的任何一个,到底是哪一个,要等掷了骰子以后才知道。概率分布用来描述随机变量(含随机向量)。对于随机变量X,其概率分布通常记为P(X=x),或X~P(x),表示X服从概率分布P(x)。原创 2023-06-14 14:28:59 · 1256 阅读 · 0 评论 -
【深度学习】0-1 深度学习相关数学概念的简单总结-线性代数
假设A是一个m×n矩阵,那么U是一个m×m矩阵,D是一个m×n矩阵,V是一个n×n矩阵。这些矩阵每一个都拥有特殊的结构,其中U和V都是正交矩阵,D是对角矩阵(注意,D不一定是方阵)。矩阵U的列向量被称为左奇异向量,矩阵V的列向量被称右奇异向量。一般矩阵的分解方法,称为奇异值分解,奇异值分解是将矩阵分解为奇异向量和奇异值。如果矩阵A的形状是 m x n,矩阵B的形状是n x p,那C的形状是m x p。单位矩阵的结构很简单,就是所有沿主对角线上的元素都是1,而其他位置元素都是0的方阵(行数等于列数的矩阵)原创 2023-06-13 12:33:26 · 949 阅读 · 0 评论 -
【深度学习】0-0 NumPy基础知识
数据初始化时,有时需要生成一些特殊矩阵,如0或1的数组或矩阵,这时我们可以利用np.zeros、np.ones、np.diag来实现,下面我们通过几个示例来说明。深度学习中经常涉及多维数组或矩阵的运算,正好NumPy模块提供了许多相关的计算方法,下面介绍一些常用的方法。ndarray,快速,节省空间的多维数组,提供数组化的算术运算和高级的广播功能。NumPy可以生成多维数组,比如,可以生成如下的二维数组(矩阵)。矩阵的算术运算也可以在相同形状的矩阵间以对应元素的方式进行。对各个元素的访问可按如下方式进行。原创 2023-06-13 09:18:13 · 1250 阅读 · 0 评论