深度学习
文章平均质量分 61
深度学习
程序员·小李
不知道要干什么的时候,停一停,想一想;知道想要什么的时候,努努力,拼一拼。
展开
-
神经网络与深度学习: 使用神经网络识别手写数字1
1. 感知机(感知神经元)一个感知机就是接受几个输入,并产生一个输出.输入与那条边对应的权重的乘积求和就是我们用来计算输出的第一步.我们通过比较这个和值与指定阈值的相对大小产生0和1不同的输出:2. 感知机的结构名词我们改写原有的分段函数,将阈值用-b代替:这里的b我们称作偏置.3. S型神经元S型神经元同样有很多输入,...原创 2019-04-03 20:52:34 · 536 阅读 · 0 评论 -
【深度学习基础】神经网络的学习(4)
基于前面的学习,我们了解了一些神经网络学习中的关键点,我们最后回顾一下学习的步骤。1. 导包2. 初始化这里对第一层、第二层的权重按正态分布初始化了权重矩阵,偏置矩阵直接初始化为0 3. 前向传播4. 使用交叉熵函数计算代价5. 梯度计算6. 准确度统计mini-batch无非就是把大数据量分小数据量多次执行: 我们发现,随着迭代次数的增多,代价函数的值逐渐减小,这说明学习是有效的。Epoch的概念:我们认为batch大小为100的mini-batch,循环原创 2022-06-11 17:27:52 · 718 阅读 · 0 评论 -
【深度学习基础】感知机
感知机就是接收多个输入,产生一个输出,其中输入输出取值为0或1.上图所示为一个感知机,我们有x1和x2将其作为输入,w1和w2作为两个输入的权重,计算权重与输入的乘积之和与指定的阈值θ作比较,大于阈值则输出1,小于阈值则输出0.上面提到几个概念:与门,就是当输入为0或1时,按照下面的真值表进行输出: 我们按照感知机的计算公式:现在x1和x2已经知道了,预期的y也知道了,剩下的问题就是:既然刚才说权重是表示参数重要程度的东西,那么在与这个操作中,我们发现,想要输出1,两个入参必须全是1才成立,所以他们的重要性原创 2022-06-03 16:36:59 · 780 阅读 · 0 评论 -
【深度学习基础】输出层设计与激活函数的选择
我们发现,神经网络解决的问题大致分为两种:1. 回归问题。连续值的预测就是回归问题,例如体重预测、温度预测。2. 分类问题。给定输入,给定类别范围,将输入划归到某一类的问题。如,0-9数字识别,鸢尾花分类问题。恒等函数就是y = x原样输出。恒等函数一般用于回归问题。softmax用于解决概率归一化的问题。即,当前输入的e指数与所有输入e指数和的商。计算公式: 例如,上述示例中的y1的计算: 代码示例:因此我们可以设计出softmax的计算函数: e指数会出现溢出的问题,我们往往需要进行优化:原创 2022-06-03 22:27:55 · 109 阅读 · 0 评论 -
【深度学习基础】三层神经网络的设计
本文主要给出三层神经网络前向推导的步骤和代码实现:上述的符号表示为第一层神经元的权重,并且指定为前一层的2号神经元与后一层的1号神经元直接的权重。我们以a1为例,a1的值分为两个部分,一是权重与输入的乘积之和,二是偏置。 以此类推,其实a2, a3的计算方法也是类似的 我们用矩阵表示为: 具体的矩阵: 代码实现A值计算:我们知道,A值计算出来后,需要使用激活函数进行激活: 整个输入层到第一隐藏层的计算就结束了。1. 计算输入与权重乘积的和,加上偏置2. 使用激活函数判断与前一层的计算类似, 先计原创 2022-06-03 22:04:22 · 1731 阅读 · 0 评论 -
【深度学习基础】手写数字识别
神经网络解决问题时,一般分为两个阶段:1. 模型训练阶段。模型训练会基于训练集获取最佳的权重和偏置,这也是模型构建、学习的过程。2. 预测阶段。预测就是根据学习到的最优参数,对测试集或新数据集上的数据进行回归预测或分类,这是模型的使用过程。本文主要重点在模型的使用过程,逐步说明模型使用和前向传播的过程。采用的是MINIST数据集的图片,像素大小为28*28,其中训练图片60000张,测试图片10000张。每个像素点的像素值范围为0-255.前一步加载了图像的数据,这里我们查看一下第一张训练集中的数据。原创 2022-06-03 23:24:02 · 476 阅读 · 0 评论 -
【深度学习基础】matplotlib绘图基础
matplotlib是用于图形、图像绘制的库。导入库首先生成指定范围的x值(横坐标),arrange(x, y, step)可以生成指定x到y范围内以step为步长的数据构成的一维数组。然后计算对应的sin值(纵坐标)最后进行图像绘制 完整代码实现:引包生成x范围计算sin和cos绘制图像plot(x, y, linestyle='--', label="cos")这里指定了线的形状和标签plt,xlabel()和plt.ylabel() 分别用于指定x轴和y轴的标签plt.title()指定图像的标原创 2022-06-03 13:59:22 · 281 阅读 · 0 评论 -
【深度学习基础】神经网络的学习(3)
通过前面的学习,我们知道了多维变量下的偏导数的计算方法。神经网络学习的过程是不断追求最优参数的过程,而计算偏导数和梯度就是追求最优参数的最快路径。梯度,就是多维自变量的偏导数构成的向量集合。例如对于下面的函数:对x0的偏导计算:对x1的偏导计算:那么梯度就是两个偏导数一起构成的向量:根据前面的学习,偏导数的计算可以采用中心差分的方式计算,而就某一维自变量的计算时,其他维度的自变量视为常量:那么计算函数在某些位置的偏导、梯度就很方便了: 我们看到函数在不同的位置,他们的偏导数各不相同,那么这原创 2022-06-11 11:44:43 · 456 阅读 · 0 评论 -
【深度学习基础】神经网络的学习(1)
神经网络解决问题时,一般分为两个阶段:1. 模型训练阶段。模型训练会基于训练集获取最佳的权重和偏置,这也是模型构建、学习的过程。2. 预测阶段。预测就是根据学习到的最优参数,对测试集或新数据集上的数据进行回归预测或分类,这是模型的使用过程。本文主要重点在模型的学习过程,也就是最优参数的确定的过程。在处理手写数字识别的问题中,我们可以采用多种处理方式:1. 人工指定参数。类似于感知机设计与门、与非门、或门,需要我们根据经验和理论推导尝试、验证参数,才能很好的构造出模型,并且,对复杂的场景,人工确定参数的确效率原创 2022-06-04 11:01:58 · 925 阅读 · 2 评论 -
【深度学习基础】反向传播法(3)
我们首先回顾一下神经网络学习的过程:在计算梯度值的时候,我们之前采用的是中心差分的方式进行的,效率比较差,所以才考虑反向传播的方式,现在我们将反向传播纳入梯度计算的步骤。1、 导入库 2、初始化、前向传播、后向传播3、基于反向传播法学习无非就是计算梯度时,将差分法换成反向传播法。...原创 2022-06-12 18:00:51 · 767 阅读 · 0 评论 -
【深度学习基础】反向传播法(1)
前面我们已经学习了神经网络的学习过程,通过梯度下降法不断逼近代价函数的最小值,进而不断更新权重,取得最优的参数。但是,前面的梯度计算,采用的是中心差分的方式进行的,计算起来比较复杂,现在开始我们开始学习一种高效的梯度计算方法——反向传播法。我们通过图形,描述支付金额的计算过程。换一种表达方式:我们发现,在解决这个问题的时候,我们自己的思路和图形完全一致!我们如何计算支付金额关于苹果单价的导数呢?可以采用刚刚计算支付金额的反向方法,计算对应的导数(具体如何计算的,后面再说)。我们发现,计算图通过前向传递,可以原创 2022-06-11 17:59:12 · 208 阅读 · 0 评论 -
【深度学习基础】numpy基础使用
如需学习Python基础,请查看一天入门Python系列https://blog.csdn.net/day_and_night_2017/category_8729957.htmlnumpy是基于python的一套数学计算库,具有丰富的矩阵运算相关的api, 为深度学习提供便利的计算工具。使用import导入numpy,并指定别名npnumpy使用ndarray表示数组。向量之间可以进行对应位置元素的基础运算:当两个向量的长度一致时,均可以进行这种运算,当出现不一致时,会报错。向量与标量进行原创 2022-06-03 13:42:03 · 324 阅读 · 0 评论 -
【深度学习基础】多维数组及内积运算
一维数组又称为向量,使用ndim()可以获取到向量的维数1。shape可以获取到各个维度的长度,这里只有一维,所以长度等于向量的长度4矩阵的生成与向量类似:我们发现,矩阵就是把一个个向量叠放在一起。使用ndim()可以获取到向量的维数2。shape可以获取到各个维度的长度,返回的3,2表示有三行,两列内积的计算不再是建单的对应位置的元素相乘了,而是:A(i, *) * B(*, j) = C(i,j) 可以使用numpy.dot(A, B)进行计算: 我们看到输入是两个,x1和x2对应的权重矩阵原创 2022-06-03 21:19:23 · 1211 阅读 · 0 评论 -
【深度学习基础】反向传播法(2)
深度学习中,各部分的反向传播实现。我们先来看看ReLU函数的特点:函数图像:对应的导数为:这也就说明了,当输入大于0时,梯度的反向传播为原样,否则,反向传播为0 代码实现:SIGMOD的函数:函数图像: 根据导数计算公式,导函数: 对于此导数,可以进一步简化:我们可以得到反向传播的计算图: 代码实现:...原创 2022-06-12 17:07:33 · 645 阅读 · 0 评论 -
【深度学习基础】感知机输出计算与激活函数
我们前面引入偏置的概念后,将感知机的输入输出改造了一种表示方法:在计算输出时,先计算出各个输入和权重的成绩之和:b + w1*x1 + w2*x2然后,根据计算结果是否大于0,判断输出结果是0还是1如果,我们将判断的方法使用一个h(x)函数来表示,那么h(x)具有这样的特点:即,输入值大于0时,则输出1,小于等于0时,则输出0.那么,我们在计算输出的时候,拆分成了两个步骤:1. 计算权重与输入的成绩之和a = b + w1*x1 + w2*x22. 通过h(x)判断,输出是0还是1y = h(a) 我们把上原创 2022-06-03 17:27:51 · 791 阅读 · 0 评论 -
【深度学习基础】神经网络的学习(2)
什么是导数?导数就是函数在某一点处的斜率,具体也表示了,在自变量发生微小变化时,函数对应的变化量大小。然而,导数的计算方式有两种,一种是绝对求导,一种是数值差分。数值微分中,为了减少误差,我们采用中心差分的方式实现:例如针对函数:先构造函数: 绘制图形: 计算x=5和x=10处的导数:根据数值微分计算的结果,均与真实值很接近(0.2、0.3) 偏导数的计算类似于导数,只不过,偏导数适用于多自变量的场景: 函数实现:这个函数图像是个三维的: 偏导数,无非就是把要计算的那个自变量当原创 2022-06-04 11:40:23 · 115 阅读 · 0 评论