matlab实现简单BP神经网络(不使用工具箱),两种求误差方式

本文介绍了如何在MATLAB中不使用工具箱实现BP神经网络,模拟y=1+x+x*x函数。网络结构为1-8-1,数据分为训练集和测试集。误差计算有两种方式:一是测试集合100个数据的平均误差,二是训练集合的全局误差累计绝对值。
摘要由CSDN通过智能技术生成

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);%输出层权值调整量初始化 0
%%  CH  建立训练集和测试集
xNum=length(x);
Itest=1:11:xNum;
Xtest_Nor=x_Nor(Itest);
Ytest_Nor=y_Nor(Itest);

Xtrain_Nor=x_Nor;
Ytrain_Nor=y_Nor;
Xtrain_No
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值