newcf——级联的前向神经网络 在新版中使用cascadeforwardnet函数代替 5.BP网络相关函数详解 net = newcf(P,T,[S1 S2...S(N-1)]) P:R*Q1矩阵,每行对应一个神经元输入数据的典型值。 T:SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型值。 Si:表示隐含层神经元个数,若隐含层多于一层,则写成行向量的形式。 与newff比较类似 5.BP网络相关函数详解 用newff和newcf对一段数据进行拟合,数据输入为向量 输出为 ,是一段折线。新版替代函数: cascadeforwardnet >>f2=cascadeforwardnet([3,5]); >> view(f2) >> rng(2) >> P = [0 1 2 3 4 5 6 7 8 9 10];% 网络输入 >> T = [0 1 2 3 4 3 2 1 2 3 4];% 期望输出 >> ff=newff(P,T,20); % 建立一个BP网络,包含一个20个节点的隐含层 >> ff.trainParam.epochs = 50; >> ff = train(ff,P,T);% 训练 >> Y1 = sim(ff,P);% 仿真 >> cf=newcf(P,T,20);% 用newcf建立前向网络 >> cf.trainParam.epochs = 50; >> cf = train(cf,P,T);% 训练 >> Y2 = sim(cf,P);% 仿真 >> plot(P,T,'o-');% 绘图 >> hold on; >> plot(P,Y1,'^m-'); >> plot(P,Y2,'*-k'); >> title('newff & newcf') >> legend('原始数据','newff结果','newcf结果',0) 6.BP神经网络应用实例 (1)基于BP网络的性别识别 .以班级中男生女生的身高、体重为输入,经过一定数量的样本训练后,可以较好地识别出新样本的性别。 男生172人,女生88人 .部分数据: 53.3 165 女 130 57.8 175.7 男 120 53 163.1 女 129 77.8 181.1 男 119 49.2 159.2 女 128 68 186.8 男 118 81.7 178.6 男 127 68.3 168.4 女 117 93.9 182.7 男 126 55.1 173.8 女 116 47.8 158.2 女 125 55.5 170.5 女 115 47.5 165.7 女 124 59.9 162 男 114 58 166.5 女 123 69 170.2 男 113 83.1 170.3 男 122 48 163.4 女 112 80.9 174.2 男 121 52.4 163.4 女 111 体重 身高 性别 学号 体重 身高 性别 学号 6.BP神经网络应用实例 思路:随机抽出部分学生的身高和体重作为训练样本(男女生都有),然后训练一个BP神经网络,最后将剩下的样本输入网络进行测试,检验BP网络的分类性能。 6.BP神经网络应用实例 1.读入 使用MATLAB的内建函数xlsread来读取XLS表格。 function [data,label]=getdata(xlsfile) [~,label]=xlsread(xlsfile,1,'B2:B261'); [height,~]=xlsread(xlsfile,'C2:C261'); [weight,~]=xlsread(xlsfile,'D2:D261'); data=[height,weight]; l=zeros(size(label)); for i=1:length(l) if label{i}== '男' l(i)=1; end end label=l; >> xlsfile='student.xls'; >> [data,label]=getdata('student.xls'); 6.BP神经网络应用实例 (2)划分训练数据与测试数据。 function [traind,trainl,testd,testl]=divide(data,label) rng(0) % 男女各取30个进行训练 TRAIN_NUM_M=30; TRAIN_NUM_F=30; % 男女分开 m_data=data(label==1,:); f_data=data(label==0