神经网络算法例题(题目和解答以及Matlab代码)

题目:采用贝叶斯正则化算法提高BP网络的推广能力,用来训练BP网络,使其能够拟合某一附加白噪声的正弦样本数据。
解答:采用贝叶斯正则化算法‘trainbr’训练BP网络,目标误差goal=1×10^-3,学习率lr=0.05,最大迭代次数epochs=500,拟合附加有白噪声的正弦样本数据,拟合数据均方根误差为0.0054,拟合后的图形用以下代码可以得出。

Matalb代码:

clear all;		%清除所有变量
close all;		%清图
clc;			%清屏
%定义训练样本矢量 P为输入矢量
P=[-1:0.05:1];
%T为目标矢量
T=sin(2*pi*P)+0.1*randn(size(P));
%绘制样本数据点
figure
plot(P,T,'+');
hold on;
plot(P,sin(2*pi*P),':');
%绘制不含噪声的正弦曲线
net=newff(minmax(P),[20,1],{
    
    'tansig','purelin'});
%采用贝叶斯正则化算法TRAINBR
net.trainFcn='trainbr';
%设置训练参数
net.trainParam.show=50; %显示中间结果的周期
net.trainParam.lr=0.05; %学习率
net.trainParam.epochs=500;  %最大迭代次数
net.trainParam.goal=1e-3;   %目标误差
%用相应算法训练BP网络
[net,tr]=train(net,P,T);
%对BP网络进行仿真
A=sim(net,P);
%计算仿真误差
E=T-A;
MSE=mse(E);
%绘制匹配结果曲线
plot(P,A,P,T,'+',P,sin(2*pi*P),':');
legend('样本点','标准正弦曲线','拟合正弦曲线');

猜你喜欢

转载自blog.csdn.net/qq_36294338/article/details/108600895