您好,登录后才能下订单哦!
BP网络工具怎么用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
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网络工具怎么用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。