![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
人工智能
文章平均质量分 72
Raine_Yang
这个作者很懒,什么都没留下…
展开
-
深度学习笔记:深度学习CNN python程序实现
卷积层(16 X 3 X 3)—ReLU—卷积层(16 X 3 X 3)—ReLU—池化层(长2,宽2,步幅2)—卷积层(32 X 3 X 3)—ReLU—卷积层(32 X 3 X 3)—ReLU—池化层(长2,宽2,步幅2)—卷积层(64 X 3 X 3)—ReLU—卷积层(64 X 3 X 3)—ReLU—池化层(长2,宽2,步幅2)—affine—ReLU—dropout(dropout比率0.5)—affine—dropout(dropout比率0.5)—softmax。原创 2023-03-13 20:59:08 · 969 阅读 · 2 评论 -
深度学习笔记:卷积神经网络(2)
在构造方法中我们设置了卷积神经网络的参数输入神经元个数,filter_num(卷积核个数),filter_size(卷积核大小),pad(填充量),stride(卷积核步幅),隐藏层神经元个数,输出神经元个数,权重初始值标准差。水平图样的卷积核会更好提取图像中水平方向的边缘,竖直图样的卷积核提取竖直方向边缘,其他以此类推。在下面程序中,我们使用30个5 X 5,通道为1的卷积核对灰度图进行检查,并将学习前和学习后的各个卷积核权重进行可视化。根据传入的参数,程序算出卷积层和池化层的输出大小。原创 2023-03-12 11:01:19 · 314 阅读 · 0 评论 -
深度学习笔记:卷积神经网络(1)
对于一个形状(w,h)的输入图,步幅为S,填充为P,卷积核(cw, ch),输出特征图形状为((w + 2P - cw) / s + 1, (h + 2P - ch) / 2 + 1)对于有多通道的图片(如RGB图片),需要使用和通道数一致的卷积核数量,其得到的特征图通道数恒为1.可以使用多个卷积核分别和图片做卷积运算,将每一个运算得到的特征图累积成一个多通道特征图。如图,对于形状为(C,H,W)的输入图,使用FN个形状为(C,FH,FW)的卷积核,得到形状为(FN,OH,OW)的输出特征图。原创 2023-03-08 21:34:20 · 406 阅读 · 0 评论 -
深度学习笔记:dropout和调优超参数方法
在正向传播中,如果train_flg为True(神经网络在训练状态),会生成一个和输入x形状相同的boolean矩阵mask,mask为False的位置(即被删除的神经元)在正向传播和反向传播的结果都为0。dropout删除神经元的操作类似于在每一轮训练一个略有不同的神经网络,最后将每一个网络的结果在预测阶段叠加,实现利用一个神经网络模拟集成学习。根据第一轮测试结果,我们将学习率范围缩小到10e-4至10e-3,将权值衰减率范围缩小到10e-8至10e-6,开始第二轮实验。原创 2023-03-05 12:40:50 · 2280 阅读 · 0 评论 -
深度学习笔记:数据正规化和抑制过拟合
这里L2范数指各权重值的平方和的开方,即√∑w²,与其类似的还有L1范数,指各权重值绝对值的和,L∞(又称Max范数),为权重值中最大值。可以看到神经网络对训练数据集拟合度非常高,在后期直接达到1(对每个epoch中300个数据预测完全正确),但是对测试数据集准确度较低,并在后期没有增长,这就是过拟合的现象。在该程序中,我们为了模拟过拟合现象,使用300的样本量,和7层神经网络(6个隐藏层,每次神经元个数100),进行200个epoch训练,并绘制训练准确度和测试准确度图象。原创 2023-03-04 11:56:07 · 473 阅读 · 0 评论 -
深度学习笔记:神经网络权重确定初始值方法
神经网络权重不可为相同的值,比如都为0,因为如果这样网络正向传播输出和反向传播结果对于各权重都完全一样,导致设置多个权重和设一个权重毫无区别。在以下实验中,我们使用5层神经网络,每层神经元个数100,使用sigmoid作为激活函数,向网络传入1000个正态分布随机数,测试使用不同的随机数对网络权重的影响。其推导出的最优初始值为每一层初始权重值是1/√N,其中N为上一层权重个数。ReLU函数有自己独特的默认权重设置,称为He初始值,其公式为2/√N标准差的随机数,N为上一次神经元个数。原创 2023-03-01 20:12:07 · 1623 阅读 · 0 评论 -
深度学习笔记:不同的反向传播迭代方法
在下面的示例中,可以看到虽然迭代方向还是呈“之”字形,但是在x方向,虽然梯度较小,但是由于受力始终在一个方向,速度逐渐加快。由于h是不断累加的平方和,如果学习一直持续下去,W更新率会不断趋于0,要改善这一问题可以参考RMSProp,该方法会对较早更新的梯度逐渐“遗忘”,而更多反应新更新的状态。这一方法实现简单,但是在很多函数中,梯度下降的方向不一定指向函数最低点,这使得梯度下降呈现“之”字形,其效率较低。在这里注意我们在h的每个元素中加上了微小的1e-7,这是为了防止h中有元素为0时,作为除数会报错。原创 2023-02-27 21:29:31 · 822 阅读 · 0 评论 -
深度学习笔记:误差反向传播(2)
如对[[1, 1, 1], [2, 2, 2], [3, 3, 3]]加上偏置[1, 2, 3]的结果为[[2, 3, 4], [3, 4, 5], [4, 5, 6]]。反向传播输出矩阵形状要和输入矩阵形状一致,如X形状为(N,2),∂L/∂X 的形状也要为(N,2)。如要计算∂L/∂X,我们要将反向传播的输入(N,3)乘以W的同时确保输出形状为(N,2)。因此,我们一般利用数值微分的结果对反向传播的结果进行验算,如果验算误差很小,我们可以确定反向传播的方法结果正确。使用反向传播发计算梯度。原创 2023-02-24 12:29:36 · 518 阅读 · 0 评论 -
深度学习笔记:误差反向传播(1)
我们节点输出∂z/∂z (就是1)乘以节点的局部偏导∂z/∂t(**2这一节点中z是关于t的函数,因此偏导为∂z/∂t)得到下一步输入∂z/∂t,在乘上t关于x函数节点偏导∂t/∂x即可得到∂z/∂x的值。如上例中如果我们直到总价格为715, 苹果的总价为200,我们可以直接推得橘子的总价,而不需要计算和橘子相关的节点。∂z/∂x 的值为y,而∂z/∂y 的值为x。∂z/∂x 和 ∂z/∂y 的值都为1,因此在反向传播中只需要将 ∂L/∂z 乘1。利用乘法和加法的反向传播实现购买苹果的计算。原创 2023-02-18 16:57:01 · 529 阅读 · 0 评论 -
深度学习笔记:使用随机梯度下降法识别mnist数据集
我们每经过一个特定的epoch检测神经网络关于训练数据和关于测试数据的预测精准度。该方法由于使用随机的mini-batch数据,被称为随机梯度下降法(stochastic gradient descent SGD)我们的目标为减小mini-batch损失函数的值。np.argmax() 得到数组中最大值,我们用此函数得到网络预测的数值和one-hot标签值。计算损失函数关于各个参数的偏导,得到损失函数关于神经网络参数的梯度。超参数:迭代次数,训练集样本量,每次选取的mini-batch样本量,学习率。原创 2023-02-12 18:23:54 · 570 阅读 · 0 评论 -
深度学习笔记:神经网络的学习(2)
通过求得损失函数(总损失关于权重和偏置的函数)梯度,寻找梯度下降的发现,即可找到函数最小值。注意利用梯度下降发得到的不一定是最小值,而仅仅为一个极小值,及梯度为0.另外,当函数呈扁平状,学习可能会进入一个平坦区域,难以进展,被称为学习高原。学习率这样的参数被称为超参数。神经网络的梯度值损失函数关于权重参数的梯度,如对于一个2 * 3的神经网络权重W,损失函数为L,梯度即为∂L/∂W。注:神经网络损失函数是关于网络输出输出的函数,而网络输出又是关于W的函数,所有损失函数也为关于W的函数。原创 2023-02-04 16:28:05 · 474 阅读 · 0 评论 -
深度学习笔记:神经网络的学习(1)
x_train形状为(60000, 784),因为训练数据集个数60000,输入数据784维(28 X 28),t_train形状为(60000, 10),训练数据集个数60000,监督数据one-hot标签量为10。为了弥补这一误差,我们可以计算函数在(x + h) 和(x - h)间的差分,称为中心差分。一般来说,机器学习的数据分为训练数据(或监督数据)和测试数据。由于tk的one-hot表示里只有正确解值为1,其他解值为0.交叉熵的值为-log(y),其中y为正确解的输出概率。原创 2023-01-26 21:57:22 · 469 阅读 · 0 评论 -
深度学习笔记:神经网络(3)
该神经网络输入层有784个神经元(来源于展开图像28 * 28),输出层有10个神经元(代表结果0-10),其中隐藏层我们使用两层,第一层50个神经元,第二次100个神经元。在我们上一个例子中,我们一次处理一张展开的图像,相当于处理一个长为784 (28 X 28)的一维数组,数组在神经网络中形状变化如下。将x代入我们上一篇文章中搭建的神经网络里得到以下结果,输出可以被解释为x[0]的概率是0.36,x[1]的概率是0.63。在实际应用中,由于e ^ x 的值往往较大,容易导致变量溢出。原创 2023-01-13 16:39:38 · 308 阅读 · 0 评论 -
深度学习笔记:神经网络(2)
输出层实现和之前的实现基本相同,不过最后得出的激活函数和之前隐藏层不同。一般使用h(x)代表隐藏层激活函数,而使用σ(x)代表输出层激活函数。输出层激活函数选取和问题性质相关,一般来说回归问题使用恒等函数,二分类问题可以使用sigmoid,多元分类可以使用softmax。对于全连接网络,连接权重的个数为(前一层神经元总数 * 后一次神经元总数),偏置量(即图中的1)连接权重个数为后一次神经元个数。这里我们使用identity_function,称为恒等函数,作为输出层的激活函数。原创 2023-01-06 21:55:28 · 386 阅读 · 1 评论 -
深度学习笔记:神经网络(1)
该函数定义域为全体实数,值域为(0, 1),在输入很小时,输出趋近于0,在输入很大时,输出趋近于1,这一点和阶梯函数类似。对于感知机,我们将输入和权重乘积相加并和阈值比较,阈值又可以表示为偏置b,及比较 x1w1 + x2w2 + b = 0 我们可以用一个函数表示以下式子,即。函数h的定义为当x 0时h(x) = 1。感知机使用一个阶梯函数,当输入达到某一阈值时输出1,否则输出0。如图,新矩阵1行1列为A第1行和B第1列相乘,1行2列为A第1行和B第2列相乘。原创 2022-12-28 21:24:31 · 418 阅读 · 0 评论 -
深度学习笔记:感知机
在如图的或门中,(0,0)位于直线下方取值1,而(1,0),(0,1),(1,1)取值1。神经元计算传来信号综合,当总和超过某一阈值时输出1,否则输出0。感知机计算输入信号和偏置和,如果和大于0输出1,否则输出0。但是,对于异或门,我们无法通过一条直接将(0,0),(1,1)和(1,0)(0,1)分开,只能使用如下图的曲线。通过组合与门,与非门,或门即可实现异或门。与门只有在输入都为1时才输出1。或门只要有一个输入为1即输出1,在两个输入都为0是返回0。与非门和与门相反,在输入都为1时输出0,否则输出1。原创 2022-12-28 15:39:09 · 572 阅读 · 0 评论 -
深度学习笔记:python的numpy和matplotlib库
在numpy里面形状不同的数组也可以计算,数组和常数也可以计算,这依靠numpy里自动的广播功能将数组扩充实现。a > 3 对数组进行比较运算会对每个元素依次进行比较,返回一个boolean数组,其中True和False代表各个元素比较结果。数学上一步将一维数组称为向量,二维数组称为矩阵,三维及以上数组称为张量(tensor)numpy为python数学计算库,里面的数组类提供大量便捷的数组和矩阵运算方法。a[np.array([0, 2, 4])]获取a第0, 2, 4位置的元素。原创 2022-12-27 20:34:20 · 860 阅读 · 0 评论