基于relu和softmax的简单深度神经网络matlab代码设计-20170508

基于relu和softmax的简单深度神经网络matlab代码设计-20170508

ID:9390282

大小:29.91 KB

页数:10页

时间:2018-04-29

基于relu和softmax的简单深度神经网络matlab代码设计-20170508_第1页
基于relu和softmax的简单深度神经网络matlab代码设计-20170508_第2页
基于relu和softmax的简单深度神经网络matlab代码设计-20170508_第3页
基于relu和softmax的简单深度神经网络matlab代码设计-20170508_第4页
基于relu和softmax的简单深度神经网络matlab代码设计-20170508_第5页
资源描述:

《基于relu和softmax的简单深度神经网络matlab代码设计-20170508》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于ReLU和Softmax的简单深度神经网络matlab代码设计本文以matlab为工具介绍下如何实现神经元激活函数为ReLU的深度神经网络。ReLU函数的数学公式很简单ReLU(x)=max(x,0),但其对DNN的贡献是巨大的。若DNN用于数据分类,则可以简单的认为其主要由两个部分组成:多隐层网络+分类器。分类器以softmax为例。第一步:准备数据1)将你需要分类的样本数据以每列的形式保存于矩阵中;->TrainData 2)将每个样本的类别标记按数据顺序存为一行向量,类别为1,2,3,…,n;->TrainLabel并将数据保存入MyData.mat数据文件中。采用以下程序实现数据的

2、生成。 x=1:10y=1:8:80rt=x.*x-50*x+40*y-y.^2;TrainData=[x;y];fork=1:10v_rt_k=rt(k)ifrt(k)<=0TrainLabel(k)=1;elseTrainLabel(k)=2;endendsave('MyData.mat','TrainData','TrainLabel')第二步:网络配置、参数初始化和转换将第一步中准备好的数据载入内存中,并采用以下程序运行数据。1.Main_functionwithoutminFuncclearallclccloseallloadMyData.matinputsize=size(Trai

3、nData,1);%获取数据的维度datanum=size(TrainData,2);%获取数据的数量10%netsize=[inputsize,50,50,50];%可以简单地用一个向量来定义网络的深度,以及每层神经元数目。这表示一个三隐藏层的DNN,神经元数都为50。netsize=[inputsize,4,3];classnum=2;%类别数目lastsize=netsize(end)+1;%网络最后一层神经元数数目,再考虑一个偏置。stack=initializeNet(netsize);%初始化网络参数,以结构体的形式保存。v_stack=stackv_stack_1=stack{1

4、}v_stack_1_w=stack{1}.wv_stack_1_b=stack{1}.bv_stack_2=stack{2}v_stack_2_w=stack{2}.wv_stack_2_b=stack{2}.b%在训练时,往往需要将参数转成一列向量,提供给损失函数。stack->stackTheta,netconfig保存一些结构参数[stackTheta,netconfig]=stack2params(stack);v_stackTheta=stackThetav_netconfig=netconfigv_netconfig_layersizes=netconfig.layersizes

5、v_lastsize=lastsizeSoftmaxTheta=0.0005*randn(lastsize*classnum,1);v_SoftmaxTheta=SoftmaxThetaTheta=[SoftmaxTheta;stackTheta];%最终网络需要的参数%thefollowingpartisforthetraingepoch.batchsize=10;%batchsize=5;%%每次训练的小批量样本数batchnum=floor(size(TrainData,2)/batchsize);DataNum=size(TrainData,2);alpha=1e-2;%

6、这是学习率,一般随着网络的悬念都需要不断的减小lambda=1e-4;%Weightdecayparameterforepoch=1:16000v_epoch=epochidx=randperm(DataNum);fort=1:batchnumsubdata=TrainData(:,idx((t-1)*batchsize+1:(t)*batchsize));10sublabel=TrainLabel(idx((t-1)*batchsize+1:(t)*batchsize));[cost,grad]=ReLUDNNCost(Theta,classnum,lastsize,netconfig,la

7、mbda,subdata,sublabel);Theta=Theta-alpha*grad;v_grad=gradendend%Note:当Theta传递进入损失函数内部时,还需要从Theta抽出stackTheta,再转成stack代码如下,都是AndrewNg的教程里面的提供的。 1.Main_functionwithminFuncofUFLDLclearallclccloseallloadM

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。