BP网络工具怎么用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
我们提供的服务有:网站设计制作、成都网站建设、微信公众号开发、网站优化、网站认证、望谟ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的望谟网站制作公司
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
神经网络可以用作分类、聚类、预测等。神经网络需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。
%% 清理
clear,clc
rng('default')
rng(2)
%% 读入数据
xlsfile='student.xls';
[data,label]=getdata(xlsfile);
%% 划分数据
[traind,trainl,testd,testl]=divide(data,label);
%% 创建网络
net=feedforwardnet(3);
net.trainFcn='trainbfg';
%% 训练网络
net=train(net,traind',trainl);

%% 测试
test_out=sim(net,testd');
test_out(test_out>=0.5)=1;
test_out(test_out<0.5)=0;
rate=sum(test_out==testl)/length(testl);
% 正确率90%

上图是训练样本的分布情况,可以看出不同分类之间交错重合部分较多,而且比较密

这是通过隐藏层变换之后的样本分布情况,变换后的样本仍有交错重合的部分,但是距离已经被拉大,可以找到一条直线近似将两类样本分隔开

这是输出层变换之后的样本分布,可以看到不同类别的样本比较明显的分隔开,一条直线分隔开的正确率达到90%
%% 显示三次样本分布
% 显示训练样本
train_m = traind(trainl==1,:);
train_m=train_m';
train_f = traind(trainl==0,:);
train_f=train_f';
figure(1)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('体重')
title('训练样本分布')
legend('男生','女生')
%% 隐藏层变换样本
hidden_tran = cell2mat(net.iw);
train_m=hidden_tran * train_m + net.b{1};
train_f=hidden_tran * train_f + net.b{1};
figure(2)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('体重')
title('隐藏层变换样本分布')
legend('男生','女生')
%% 输出层变换样本
layout_tran = cell2mat(net.lw);
train_m=layout_tran * train_m + net.b{2};
train_f=layout_tran * train_f + net.b{2};
figure(3)
plot(train_m(1,:),'bo');
hold on;
plot(train_f(1,:),'r*');
xlabel('身高')
ylabel('体重')
title('输出层变换样本分布')
legend('男生','女生')
这里的网络是简单的,如果设计出复杂的网络,就可以实现下面这样的变换

变换前

变换后

变换前

变换后

帮你学MatLab

看完上述内容,你们掌握BP网络工具怎么用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享名称:BP网络工具怎么用
文章位置:http://scpingwu.com/article/pcejoe.html