BP(BackPRopagation)神经收集是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传布算法训练的多层前馈收集,是目前应用最普遍的神经收集模子之一。BP收集能进修和存贮大量的输入-输出形式映射关系,而无需事前提醒描述那种映射关系的数学方程。它的进修规则是利用最速下降法,通过反向传布来不竭调整收集的权值和阈值,使收集的误差平方和最小。BP神经收集模子拓扑构造包罗输入层(input)、隐层(hiddenlayer)和输出层(outputlayer)。

BP(BackPropagation)神经收集可用于数据的预测,是经常利用的预测办法之一。

基于MATLAB的BP神经收集预测计算GUI界面  第1张

基于MATLAB的BP神经收集预测计算GUI界面  第2张

基于MATLAB的BP神经收集预测计算的GUI界面如下:

加载数据——输入样本数据个数、训练数据个数、预测数据个数、中间层隐藏节点个数、收集输入维度、收集输出维度,x轴坐标名称、y轴坐标名称——点击起头计算即可呈现成果,同时会在当前文件夹下生成预测数据的excel文件和两个图片1.png、2.png。需要完好GUI法式,能够停止赞扬后截图(40元及以上),停止联络,几小时内会回复。界面编程不容易,还请见谅!

基于MATLAB的BP神经收集预测计算GUI界面  第3张

基于MATLAB的BP神经收集预测计算GUI界面  第4张

基于MATLAB的BP神经收集预测计算GUI界面  第5张

基于MATLAB的BP神经收集预测计算GUI界面  第6张

基于MATLAB的BP神经收集预测计算GUI界面  第7张

GUI界面的次要法式

function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global datatry delete(allchild(handles.axes1)); delete(allchild(handles.axes2));endset(handles.text14,'string','正在训练中');set(handles.uitable1,'data',data);warning off;samnum = str2num(get(handles.edit6,'string'));testsamnum =str2num(get(handles.edit7,'string'));forcastsamnum = str2num(get(handles.edit8,'string'));hiddenunitnum =str2num(get(handles.edit9,'string'));indim = str2num(get(handles.edit10,'string'));outdim =str2num(get(handles.edit11,'string'));str1 = get(handles.edit12,'string');str2 = get(handles.edit13,'string');hj=data;X=hj(1:samnum,outdim+1:end-1)';D=hj(1:samnum,outdim)';test=D;p = X;t = D;[samin,minp,maxp,tn,mint,maxt] = premnmx(p,t);rand('state',sum(100*clock))noisevar = 0.01;noise = noisevar*randn(1,samnum);samout = tn + noise;testsamin = samin;testsamout = samout;maxepochs = 50000;lr = 0.035;e0 = 0.65*10^(-3);w1 = 0.5*rand(hiddenunitnum,indim)-0.1;b1 = 0.5*rand(hiddenunitnum,1)-0.1;w2 = 0.5*rand(outdim,hiddenunitnum)-0.1;b2 = 0.5*rand(outdim,1)-0.1;errhistory = [];for i = 1:maxepochs hiddenout = logsig(w1*samin+repmat(b1,1,samnum)); networkout = w2*hiddenout+repmat(b2,1,samnum); error = samout-networkout; sse = sumsqr(error); errhistory = [errhistory sse]; if sse<e0 break; end delta2 = error; delta1 = w2'*delta2.*hiddenout.*(1-hiddenout); dw2 = delta2*hiddenout'; db2 = delta2*ones(samnum,1); dw1 = delta1*samin'; db1 = delta1*ones(samnum,1); w2 = w2+lr*dw2; b2 = b2+lr*db2; w1 = w1+lr*dw1; b1 = b1+lr*db1;end

做 者 | 郭志龙编 辑 | 郭志龙校 对 | 郭志龙

本文内容来源于收集,仅供参考进修,如内容、图片有任何版权问题,请联络处置,24小时内删除。