深度学习(deep learning)之一步一步实现编写深度神经网络(DNN)

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

inputsize=size(TrainData ,1);%获取数据的维度
datanum=size(TrainData ,2);%获取数据的数量
netsize=[inputsize,50,50,50];%可以简单地用一个向量来定义网络的深度,以及每层神经元数目。这表示一个三隐藏层的DNN,神经元数都为50。
classnum=2;%类别数目

DNN中的可训练参数主要为每层的权值W,偏置b,以及softmax 分类器的的参数SoftmaxTheta;

lastsize=netsize(end)+1;%网络最后一层神经元数数目,再考虑一个偏置。
stack = initializeNet(netsize);%初始化网络参数,以结构体的形式保存。
[stackTheta, netconfig] = stack2params(stack);%在训练时,往往需要将参数转成一列向量,提供给损失函数。stack ->stackTheta,netconfig保存一些结构参数
SoftmaxTheta = 0.0005 * randn(lastsize * classnum, 1);
Theta=[ SoftmaxTheta ; stackTheta ];%最终网络需要的参数
function stack = initializeNet(netsize) layersize=length(netsize(:)); stack = cell(layersize-1
  • 9
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值