[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150)
%特征值归一化
[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]')
%构造输出矩阵
s = length( class)
output = zeros( s , 3 )
for i = 1 : s
output( i , class( i ) ) = 1
end
%创建神慎圆绝宽姿经网络
net = newff( minmax(input) , [10 3] , { 'logsig' 'purelin' } , 'traingdx' )
%设置训练参数
net.trainparam.show = 50
net.trainparam.epochs = 500
net.trainparam.goal = 0.01
net.trainParam.lr = 0.01
%开始训练
net = train( net, input , output' )
%读取测试数据
[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150)
%测试数据归腔誉一化
testInput = tramnmx ( [t1,t2,t3,t4]' , minI, maxI )
%仿真
Y = sim( net , testInput )
%统计识别正确率
[s1 , s2] = size( Y )
hitNum = 0
for i = 1 : s2
[m , Index] = max( Y( : , i ) )
if( Index == c(i) )
hitNum = hitNum + 1
end
end
sprintf('识别率是 %3.3f%%',100 * hitNum / s2 )
看了你的数据,你至少要有的类标号吧,不知道你哪里是输入向量,哪里是输出向量
段戚闭程序基启配于Viola-Jones 算检测脸、鼻、眼睛其程先用faceDetector = vision.CascadeObjectDetector构造给检测器再用bboxes = step(faceDetector, I)检悄仔指测脸copy来的:lc
P=[110 0.807 240 0.2 15 1 18 2 1.5
110 2.865 240 0.1 15 2 12 1 2
110 2.59 240 0.1 12 4 24 1 1.5
220 0.6 240 0.3 12 3 18 2 1
220 3 240 0.3 25 3 21 1 1.5
110 1.562 240 0.3 15 3 18 1 1.5
110 0.547 240 0.3 15 1 9 2 1.5]
%110 1.318 300 0.1 15 2 18 1 2]
T=[54248 162787 168380 314797
28614 63958 69637 82898
86002 402710 644415 328084
230802 445102 362823 335913
60257 127892 76753 73541
34615 93532 80762 110049
56783 172907 164548 144040]
%40907 117437 120368 130179]
m=max(max(P))
n=max(max(T))
P=P'/m
T=T'/n
%-------------------------------------------------------------------------%
pr(1:9,1)=0%输入矢量的取值范围矩阵
pr(1:9,2)=1
bpnet=newff(pr,[12 4],, 'traingdx', 'learngdm')
%建立BP神经网络, 12个隐层神经元,4个输出神经元
%tranferFcn属性 'logsig' 隐层采用Sigmoid传输函数
%tranferFcn属性 'logsig' 输出层采用Sigmoid传输函数
%trainFcn属性 'traingdx' 自适应调整学习速率附加动量因子梯度下降反向传播算法训练贺租函数禅搜兆
%learn属性 'learngdm' 附加动量因子的梯度下降学习函数
net.trainParam.epochs=1000%允许最大训练步数2000步
net.trainParam.goal=0.001%训练目标最小误差漏迹0.001
net.trainParam.show=10%每间隔100步显示一次训练结果
net.trainParam.lr=0.05%学习速率0.05
bpnet=train(bpnet,P,T)
%-------------------------------------------------------------------------
p=[110 1.318 300 0.1 15 2 18 1 2]
p=p'/m
r=sim(bpnet,p)
R=r'*n
display(R)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)