% trainDBN: training the Deep Belief Nets (DBN) model by back projection algorithm%trainDBN:通过反投影算法训练深度信念网(DBN)模型。
%
% [dbn rmse] = trainDBN( dbn, IN, OUT, opts)%trainDBN的调用格式
%
%
%Output parameters:%输出参数
% dbn: the trained Deep Belief Nets (DBN) model%dbn:被训练的深度置信网络
% rmse: the rmse between the teaching data and the estimates%教学数据与估算之间的标准误差
%
%
%Input parameters:%输入参数
% dbn: the initial Deep Belief Nets (DBN) model%dbn:最初的深度置信网络模型。
% IN: visible (input) variables, where # of row is number of data and # of col is # of visible (input) nodes%IN:可见(输入)变量,行是数据的数量列是可见(输入)节点
% OUT: teaching hidden (output) variables, where # of row is number of data and # of col is # of hidden (output) nodes%OUT:教学隐藏(输出)变量,其中行是数据的数量列是隐藏(输出)节点数。
% opts (optional): options%选择(可选):选项
% options (defualt value):%选项(默认值)
% opts.Layer: # of tarining RBMs counted from output layer (all layer)%opts.Layer:计算训练中的受限玻尔兹曼机从输出层(所有层)
% opts.MaxIter: Maxium iteration number (100)%opts.MaxIter:马克西姆迭代数(100)
% opts.InitialMomentum: Initial momentum until InitialMomentumIter (0.5)%opts.InitialMomentum:初始动量,直到初始动量仪(0.5)
% opts.InitialMomentumIter: Iteration number for initial momentum (5)%opts.InitialMomentumIter:初始动量的迭代数(5)
% opts.FinalMomentum: Final momentum after InitialMomentumIter (0.9)%opts.FinalMomentum:初始动量之后的最终动量(0.9)
% opts.WeightCost: Weight cost (0.0002)%opts.WeightCost:权重(0.0002)
% opts.DropOutRate: List of Dropout rates for each layer (0)%opts.DropOutRate:每一层的退学率(0)
% opts.StepRatio: Learning step size (0.01)%opts.StepRatio:学习步长(0.01)
% opts.BatchSize: # of mini-batch data (# of all data)%opts.BatchSize:小批量数据#(所有数据的#)
% opts.Object: specify the object function ('Square')%opts.Object:指定对象函数('平方')
% 'Square' %平方
% 'CrossEntorpy'%交叉熵
% opts.Verbose: verbose or not (false)%opts.Verbose:详细的过程与否(错误)
%
%
%Example:%举例
% datanum = 1024;%数据数目
% outputnum = 16;%输出数目
% hiddennum = 8;%隐层数目
% inputnum = 4;%输入数目
%
% inputdata = rand(datanum, inputnum);%输入数据为一个datanum行,inputnum列的随机矩阵
% outputdata = rand(datanum, outputnum);%输出数据为一个datanum行,outputnum列的随机矩阵
%
% dbn = randDBN([inputnum, hiddennum, outputnum]);%调用randDBN函数
% dbn = pretrainDBN( dbn, inputdata );%dbn为预训练深度训练网络(dbn,输入数据)
% dbn = SetLinearMapping( dbn, inputdata, outputdata );%调用SetLinearMapping函数
% dbn = trainDBN( dbn, inputdata, outputdata );%调用trainDBN函数
%
% estimate = v2h( dbn, inputdata );%调用v2h函数
%
%
%Reference:%参考
%for details of the dropout%关于辍学的细节
% Hinton et al, Improving neural networks by preventing co-adaptation of feature detectors, 2012.%Hinton等人,通过阻止功能探测器的协同适应,改善神经网络,2012年。
%
%
%Version: 20131024%版本:20131024
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deep Neural Network: %深度神经网络 %
% %
% Copyright (C) 2013 Masayuki Tanaka. All rights reserved. %
% [email protected] %
% %版权(C) 2013年Masayuki Tanaka。保留所有权利。 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [dbn rmse] = trainDBN( dbn, IN, OUT, opts)%trainDBN的调用格式
% Important parameters%重要的参数
InitialMomentum = 0.5; % momentum for first five iterations%前五个迭代的动量;初始动量0.5
FinalMomentum = 0.9; % momentum for remaining iterations%动量对剩余的迭代;最后动量0.9
WeightCost = 0.0002; % costs of weight update%权重更新;权重为0.0002
InitialMomentumIter = 5;%初始动量迭代次数为5
MaxIter = 1000;%最大迭代次数
StepRatio = 0.01;%步长为0.01
BatchSize = 0;%批量大小为0
Verbose = false;%Verbose为错误的
Layer = 0;%层数为零
strbm = 1;%strbm为1
nrbm = numel( dbn.rbm );%nrbm为dbn.rbm中元素的个数
DropOutRate = zeros(nrbm,1);%DropOutRate为nrbm行,1列的全零矩阵
OBJECTSQUARE = 1;%OBJECTSQUARE为1
OBJECTCROSSENTROPY = 2;%OBJECTCROSSENTROPY为2
Object = OBJECTSQUARE;%Object为OBJECTSQUARE
TestIN = [];%TestIN为空矩阵
TestOUT = [];%TestOUT为空矩阵
fp = [];%fp为空矩阵
debug = 0;%debug为0
if( exist('opts' ) )%如果存在opts
if( isfield(opts,'MaxIter') )%检查结构体opts是否包含由MaxIter指定的域, 如果包含,返回逻辑1; 如果opts不包含MaxIter域或者opts不是结构体类型的, 返回逻辑0。
MaxIter = opts.MaxIter;%MaxIter为opts.MaIter
end
if( isfield(opts,'InitialMomentum') )%检查结构体opts是否包含由InitialMomentum指定的域, 如果包含,返回逻辑1; 如果opts不包含InitialMomentum域或者opts不是结构体类型的, 返回逻辑0。
InitialMomentum = opts.InitialMomentum;%InitialMomentum为opts.InitialMomentum
end
if( isfield(opts,'InitialMomentumIter') )%检查结构体opts是否包含由InitialMomentumIter指定的域, 如果包含,返回逻辑1; 如果opts不包含InitialMomentumIter域或者opts不是结构体类型的, 返回逻辑0。
InitialMomentumIter = opts.InitialMomentumIter;%InitialMomentumIter为opts.InitialMomentumIter
end
if( isfield(opts,'FinalMomentum') )%检查结构体opts是否包含由FinalMomentum指定的域, 如果包含,返回逻辑1; 如果opts不包含FinalMomentum域或者opts不是结构体类型的, 返回逻辑0。
FinalMomentum = opts.FinalMomentum;%FinalMomentum为opts.FinalMomentum
end
if( isfield(opts,'WeightCost') )%检查结构体opts是否包含由WeightCost指定的域, 如果包含,返回逻辑1; 如果opts不包含WeightCost域或者opts不是结构体类型的, 返回逻辑0。
WeightCost = opts.WeightCost;%WeightCost为opts.WeightCost
end
if( isfield(opts,'DropOutRate') )%检查结构体opts是否包含由DropOutRate指定的域, 如果包含,返回逻辑1; 如果opts不包含DropOutRate域或者opts不是结构体类型的, 返回逻辑0。
DropOutRate = opts.DropOutRate;%DropOutRate为opts.DropOutRate
if( numel(DropOutRate) == 1 )%如果DropOutRate中的元素个数恒为1
DropOutRate = ones(nrbm,1) * DropOutRate;%DropOutRate为LayerNum行,1列的全一矩阵乘以DropOutRate
end
end
if( isfield(opts,'StepRatio') )%检查结构体opts是否包含由StepRatio指定的域, 如果包含,返回逻辑1; 如果opts不包含StepRatio域或者opts不是结构体类型的, 返回逻辑0。
StepRatio = opts.StepRatio;%StepRatio为opts.StepRatio
end
if( isfield(opts,'BatchSize') )%检查结构体opts是否包含由BatchSize指定的域, 如果包含,返回逻辑1; 如果opts不包含BatchSize域或者opts不是结构体类型的, 返回逻辑0。
BatchSize = opts.BatchSize;%BatchSize为otps.BatchSize
end
if( isfield(opts,'Verbose') )%检查结构体opts是否包含由Verbose指定的域, 如果包含,返回逻辑1; 如果opts不包含Verbose域或者opts不是结构体类型的, 返回逻辑0。
Verbose = opts.Verbose;%Verbose为opts.Verbose
end
if( isfield(opts,'Layer') )%检查结构体opts是否包含由Layer指定的域, 如果包含,返回逻辑1; 如果opts不包含Layer域或者opts不是结构体类型的, 返回逻辑0。
Layer = opts.Layer;%Layer为opts.Layer
end
if( isfield(opts,'Object') )%检查结构体opts是否包含由Object指定的域, 如果包含,返回逻辑1; 如果opts不包含Object域或者opts不是结构体类型的, 返回逻辑0。
if( strcmpi( opts.Object, 'Square' ) )%如果opts.Object与Square字符串长度相等
Object = OBJECTSQUARE;%Object为OBJECTSQUARE
elseif( strcmpi( opts.Object, 'CrossEntropy' ) )%如果opts.Object与CrossEntropy字符串长度相等
Object = OBJECTCROSSENTROPY;%Object为OBJECTCROSSENTROPY
end
end
if( isfield(opts,'TestIN') )%检查结构体opts是否包含由TestIN指定的域, 如果包含,返回逻辑1; 如果opts不包含TestIN域或者opts不是结构体类型的, 返回逻辑0。
TestIN = opts.TestIN;%TestIN为opts.TestIN
end
if( isfield(opts,'TestOUT') )%检查结构体opts是否包含由TestOUT指定的域, 如果包含,返回逻辑1; 如果opts不包含TestOUT域或者opts不是结构体类型的, 返回逻辑0。
TestOUT = opts.TestOUT;%TestOUT为opts.TestOUT
end
if( isfield(opts,'LogFilename') )%检查结构体opts是否包含由LogFilename指定的域, 如果包含,返回逻辑1; 如果opts不包含LogFilename域或者opts不是结构体类型的, 返回逻辑0。
fp = fopen( opts.LogFilename, 'w' );% fopen()是个将数据按指定格式读入到matlab中的函数。w
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 数据; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开除main.m的其他m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 智能优化算法优化深度置信网络DBN分类预测系列程序定制或科研合作方向: 4.4.1 遗传算法GA/蚁群算法ACO优化DBN 4.4.2 粒子群算法PSO/蛙跳算法SFLA优化DBN 4.4.3 灰狼算法GWO/狼群算法WPA优化DBN 4.4.4 鲸鱼算法WOA/麻雀算法SSA优化DBN 4.4.5 萤火虫算法FA/差分算法DE优化DBN
资源推荐
资源详情
资源评论
收起资源包目录
【DBN回归预测】基于matlab改进的灰狼算法优化深度置信网络GWO-DBN数据回归预测(多输出)【含Matlab源码 3243期】.zip (35个子文件)
【DBN回归预测】基于matlab改进的灰狼算法优化深度置信网络GWO-DBN数据回归预测(多输出)【含Matlab源码 3243期】
R2.m 180B
Bounds.m 211B
file3_main_compare.m 2KB
data1.csv 493KB
IGWO.m 7KB
boundConstraint.m 516B
1.png 4KB
55.PNG 154KB
PSO_dbn.mat 18KB
file1_main_DBN.m 3KB
6.png 13KB
Main1.m 4KB
5.png 13KB
4.png 12KB
重要性20.xlsx 424KB
best_para.mat 93KB
dbn.mat 404B
fitness.m 2KB
7.png 12KB
DeepBeliefNetworksToolbox
GetDroppedDBN.m 3KB
pretrainRBM.m 13KB
CalcRmse.m 2KB
h2v.m 3KB
GetOnInd.m 2KB
randDBN.m 3KB
v2h.m 3KB
sigmoid.m 724B
ObjectFunc.m 1KB
CalcErrorRate.m 1KB
randRBM.m 2KB
SetLinearMapping.m 3KB
v2hall.m 2KB
pretrainDBN.m 5KB
trainDBN.m 21KB
linearMapping.m 2KB
共 35 条
- 1
资源评论
海神之光
- 粉丝: 3w+
- 资源: 2093
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功