当前位置: 首页 > news >正文

沈阳企业自助建站徐州关键词优化平台

沈阳企业自助建站,徐州关键词优化平台,淘宝网站建设违规吗,网站简单制作前言 思索了很久到底要不要出深度学习内容#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新#xff0c;很多坑都没有填满#xff0c;而且现在深度学习的文章和学习课程都十分的多#xff0c;我考虑了很久决定还是得出神经网络系列文章#xff0c;…前言 思索了很久到底要不要出深度学习内容毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新很多坑都没有填满而且现在深度学习的文章和学习课程都十分的多我考虑了很久决定还是得出神经网络系列文章不然如果以后数学建模竞赛或者是其他更优化模型如果用上了神经网络比如利用LSTM进行时间序列模型预测那么就更好向大家解释并且阐述原理了。但是深度学习的内容不是那么好掌握的包含大量的数学理论知识以及大量的计算公式原理需要推理。且如果不进行实际操作很难够理解我们写的代码究极在神经网络计算框架中代表什么作用。不过我会尽可能将知识简化转换为我们比较熟悉的内容我将尽力让大家了解并熟悉神经网络框架保证能够理解通畅以及推演顺利的条件之下尽量不使用过多的数学公式和专业理论知识。以一篇文章快速了解并实现该算法以效率最高的方式熟练这些知识。 现在很多竞赛虽然没有限定使用算法框架但是更多获奖的队伍都使用到了深度学习算法传统机器学习算法日渐式微。比如2022美国大学生数学建模C题参数队伍使用到了深度学习网络的队伍获奖比例都非常高现在人工智能比赛和数据挖掘比赛都相继增多对神经网络知识需求也日渐增多因此十分有必要掌握各类神经网络算法。 博主专注建模四年参与过大大小小数十来次数学建模理解各类模型原理以及每种模型的建模流程和各类题目分析方法。此专栏的目的就是为了让零基础快速使用各类数学模型、机器学习和深度学习以及代码每一篇文章都包含实战项目以及可运行代码。博主紧跟各类数模比赛每场数模竞赛博主都会将最新的思路和代码写进此专栏以及详细思路和完全代码。希望有需求的小伙伴不要错过笔者精心打造的专栏。 上篇文章本来是打算完结神经网络的忘记了写的是基于梯度的反向传播的计算并不是基于激活函数误差的反向传播的神经网络。对于数据微分来说它的计算非常消耗时间会导致epoch迭代数据传播效率低下自然导致训练准确率低。如果对误差反向传播较为熟悉的话就没有必要用数值微分故掌握误差反向传播需要掌握的比较熟练。 我们仍然从基础原理一步一步来理解反向传播的计算方法这样一来基础比较扎实且容易明白。 一、ReLU反向传播实现 激活函数我们有对ReLU基本了解 ReLURectified Linear Activation函数是深度学习中常用的非线性激活函数之一。它在神经网络中广泛应用因为它简单有效能够解决梯度消失问题并且在实际应用中取得了良好的结果。 ReLU 函数的定义很简单对于任何输入值 x输出等于输入 x如果 x 大于等于零或者输出为零如果 x 小于零。数学表达式如下 也就是说如果前向传播的输入大于0则直接传给下一层如果为0则直接传给下一层。 通过上述描述我们可以求出y关于x的导数 那么ReLU的反向传播为的实现代码为 class Relu:def __init__(self):self.xNonedef forward(self,x):self.x np.maximum(0,x)out self.xreturn outdef backward(self,dout):dx doutdx[self.x 0]0return dx 是不是比较好理解方向传播即为原计算方程进行偏导那么我们再来看看Sigmoid的反向传播。 二、Sigmoid反向传播 Sigmoid函数公式我们知道为 ,通常用于二元分类模型。 这里推荐一本书能够更加系统基础的学习神经网络深度学习与图像识别原理与实践 里面有很详细的推导过程这里借用书上Sigmoid计算图来展示 那么对于反向传播我们需要反着来推从右向左依次来看 对进行求偏导不知道大家大学高数学得怎么样了对其求偏导为第二步进行反响传播时会将上游的值乘以本阶段的导数对于求导得到的导数为故第二步的导数为第三步求导自然是-1.故最终求导为之后乘以上层求导结果输出为. 最后我们Python实现一下 class _sigmoid:def __init__(self):self.out Nonedef forward(self,x):out 1/(1np.exp(-x))self.outoutreturn outdef backward(self,dout):dx dout*self.out*(1-self.out)return dx 三、Affine层 神经网络中的 Affine 层也称为全连接层或线性层在神经网络中扮演着重要的角色其主要作用是引入线性变换和权重参数。这一层在前馈神经网络中用于将输入数据与权重相乘然后加上偏置从而产生输出。 Affine通常被加在卷积神经网络或循环神经网络中作为最终预测前的输出的顶层。一般形式为 其中x是层输入w是参数b是一个偏置量f是一个非线性激活函数。 这里需要注意的是X基本为多个也就是矩阵。如果加上1偏置量的话偏置量会被加到各个X-W中去。 class Affine:def __init__(self,W,b):self.WWself.bbself.xNoneself.dWNoneself.dbNonedef forward(self,x):self.xxoutnp.dot(x,self.W)self.breturn outdef backward(self,dout):dx np.dot(dout,self.W.T)self.dW np.dot(self.x.T,dout)self.db np.sum(dout,axis0)return dx 四、基于数值微分和误差反向传播的比较 我们现在接触了两种梯度计算的方法一种是基于数值微分的方法另一种是基于误差反向传播的方法对于数值微分来说计算消耗是比较大的用时很长。所以一般都是推荐使用误差反向传播具体代码如下 from collections import OrderedDict import numpy as np class TwoLayerNet:def __init__(self,input_size,hidden_size,output_size,weight_init_std 0.01):#权重self.params {}self.params[W1] weight_init_std * np.random.randn(input_size,hidden_size)self.params[b1] np.zeros(hidden_size)self.params[W2] weight_init_std * np.random.randn(hidden_size,output_size)self.params[b2] np.zeros(output_size)#生成层self.layers OrderedDict()self.layers[Affine1] Affine(self.params[W1],self.params[b1])self.layers[Relu1] Relu()self.layers[Affine2] Affine(self.params[W2],self.params[b2])self.layers[Relu2] Relu()self.lastLayer SoftmaxWithLoss()def predict(self,x):for layer in self.layers.values():x layer.forward(x)return x#x:输入数据y:监督数据def loss(self,x,y):p self.predict(x)return self.lastLayer.forward(p,y)def accuracy(self,x,y):p self.predict(x)p np.argmax(y,axis1)if y.ndim ! 1:y npp.argmax(y,axis1)accuracy np.sum(py)/float(x.shape[0])return accuracy#x:输入数据y:监督数据def numerical_gradient(self,x,y):loss_W lambda W: self.loss(x,y)grads {}grads[W1] numerical_gradient(loss_W, self.params[W1])grads[b1] numerical_gradient(loss_W, self.params[b1])grads[W2] numerical_gradient(loss_W, self.params[W2])grads[b2] numerical_gradient(loss_W, self.params[b2])return gradsdef gradient(self , x, y):#forwardself.loss(x,y)#backwarddout 1dout self.lastLayer.backward(dout)layers list(self.layers.values())layers.reverse()for layer in layers:dout layer.backward(dout)#设定grads {}grads[W1], grads[b1] self.layers[Affine1].dW, self.layers[Affine1].dbgrads[W2], grads[b2] self.layers[Affine2].dW, self.layers[Affine2].dbreturn gradsnetwork TwoLayerNet(input_size 784,hidden_size 50 , output_size 10) x_batch x_train[:100] y_batch y_train[:100] grad_numerical network.numerical_gradient(x_batch,y_batch) grad_backprop network.gradient(x_batch,y_batch)for key in grad_numerical.keys():diff np.average(np.abs(grad_backprop[key]-grad_numerical[key]))print(key:str(diff)) 两者差值并不是很大那么我们再看看准确率 是不是感觉很厉害了那么到这里神经网络基础内容就结束了我们完成了从输入层-前向传播-权重偏置-激活函数-反向传播-前向传播----....网络的计算框架搭建基本内容已经掌握了。那么我们现在可以开启深度学习网络的深入研究了敬请期待下篇文章内容。
http://www.yingshimen.cn/news/83689/

相关文章:

  • 那种非法网站怎么做的淄博哪有培训做网站的
  • 做本地生活网站项目网络图
  • 网站的主要栏目及功能网站建设和维护怎么学
  • 优秀企业网站wordpress 同步微博
  • 怎么选择邯郸做网站seo长尾关键词
  • 什么是网站管理系统网站关于我们怎么做单页面模板
  • 佛山网站建设公司哪家最好中国足彩网竞彩推荐
  • 北京网站建设方案书网站备案被拒
  • 成都网站建设推广详情微博图床wordpress
  • 南宁网站推广手段wordpress 调整 行距
  • 启东做网站的网络公司有哪些怎么用程序做网站
  • 哪个网站专做二手相机建设工程敎育网网站
  • 网站建设包含项目营销型企业网站建设价格
  • 广州市外贸网站建设服务机构衡阳做淘宝网站建设
  • 怎样可以做网站外包公司能不能去
  • 沈阳网站建站网站备案 前置审批号
  • 嘉兴做网站赚钱么网页设计与制作课程目标
  • 4399看片手机在线高清动画自己怎么做网站优化
  • 六安市建设银行网站二手商品网站开发背景
  • 网站风格分析网站建设需要注意哪些细节
  • 大连网站排名优化价格Python建网站的步骤
  • 新手自己建网站网站技术方案
  • 东莞网站推广优化搜索推广商洛网络推广公司
  • 网站建设工程师面试对自己的前景规划简单网
  • 网站 ipc 备案中国石化工程建设有限公司
  • 网站的类别智能logo设计网站
  • 广东地区建网站的公司网站建设费税率多少
  • 重庆所有做网站的公司排名王占郡
  • 购物网站模版htmlwordpress做301重定向
  • 如何查网站是哪家公司做的网站排名张家港