BP入门学习
1.神经网络是什么
2.BP神经网络基础理论
3.BP神经网络的建模
4.自实现一个BP神经网络
【流程】BP神经网络归一化使用Demo
作者 : 老饼 日期 : 2022-06-21 20:17:07 更新 : 2023-05-08 18:49:13
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com






     BP神经网络归一化使用Demo    


本文展示如何利用《BP神经网络归一化训练Demo》的nbp3函数训练一个三层BP神经网络
由于nbp3训练后的网络是面向归一化数据的
本文展示训练后的网络应该如何预测新样本
 具体代码如下
close all;clear all;
%-----------数据----------------------
x1 = [-3,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,0.9,1.2,1.5,1.8];     % x1:x1 = -3:0.3:2;
x2 = [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,-2.2204,0.2,0.4,0.6,0.8,1,1.2];   % x2:x2 = -2:0.2:1.2;
X  = [x1;x2];      % 将x1,x2作为输入数据
y  = [0.6589,0.2206,-0.1635,-0.4712,-0.6858,-0.7975,-0.8040,...
    -0.7113,-0.5326,-0.2875 ,0.9860,0.3035,0.5966,0.8553,1.0600,1.1975,1.2618];       % y: y = sin(x1)+0.2*x2.*x2;

%--------参数设置与常量计算-------------
setdemorandstream(88);
hide_num = 3;                                                                         % 设置隐节点个数
[w21,b2,w32,b3,xmin,xmax,ymin,ymax,mse_record] = nbp3(X,y,hide_num);                  % 调用nbp3进行网络训练
Xn   = 2*(X -repmat(xmin,1,size(X,2)))./repmat(xmax-xmin,1,size(X,2)) - 1;            % 将输入数据进行归一化
simy = w32*tansig(w21*Xn+repmat(b2,1,size(Xn,2)))+repmat(b3,1,size(Xn,2));            % 预测结果
simy = (simy+1).*(ymax-ymin)./2 + ymin;                                               % 对结果反归一
																				      
% -------------绘制训练结果与打印模型参数-----------------------------                
h = figure;                                                                           
[~,sample_num] = size(X);                                                             
subplot(1,2,1)                                                                        
plot(mse_record)                                                                      
subplot(1,2,2)                                                                        
plot(1:sample_num,y);                                                                 
hold on                                                                               
plot(1:sample_num,simy,'-r');                                                         
set(h,'units','normalized','position',[0.1 0.1 0.8 0.5]);                             
%--模型参数--                                                                         
w32                                                                                   % 隐层到输出层的权重 
b3                                                                                    % 输出层阈值
w21                                                                                   % 输入层到隐层权重
b2                                                                                    % 隐层阈值






     运行结果    


笔者在2018a中的运行结果如下
  
可见,网络已经有效地拟合训练数据










 End 





联系老饼