BP网络实现y=1+x+x*x函数模拟,输入层一个节点,隐含层8个节点,输出层1个节点
将数据分为测试集合和训练集合两部分
%% BP算法模拟 y = 1 + x + x*x
%作者:msl 时间:2017-10-07
clc;
clear;
%% step0:定义
TrainCount = 1000;%最大训练次数为2000次
DataNum = 1001;%训练的数据有1001个
Hide_Out = zeros(1,8);%初始化隐含层输出
Hide_OutTest = zeros(1,8);
Rata_H = 0.2;%隐含层学习速率
Rata_O = 0.1;%输出层学习速率
%% step1:取数据
x = -5:0.01:6;%x的训练数据
y = 1 + x + x.*x;%y对应于x的数据
%% step2:训练数据归一化和初始化权值
x_Nor = (x -(-5) + 1)/(5 - (-5) + 1);%x归一化后得到的数据
y_Nor = (y - 0.75 + 1)/(31 - 0.75 + 1);%y归一化后得到的数据
w = 2*(rand(1,8)-0.5);%得到输入层到隐含层的8个权值初始化
v = 2*(rand(1,8)-0.5);%得到隐含层到输出层的8个权值初始化
dw = zeros(1,8);%隐含层权值调整量初始化 0
dv = zeros(1,8);%输出层权值调整量初