BP对工件的识别
我的设计是非常简单的,但我得智商也是非常简单的。 我在一组工件数据对其进行训练之后,通过程序识别出测试工件的类型。
但是,不能解决训练与识别分开的问题,老师说不能每次识别工件都要先训练一次亚!
我想是挺有道理的,要如何在训练一次之后,每次只要输入工件测试数据就能对其型号进行识别,成为我现在最困扰的问题,希望各位哥哥姐姐能帮我个忙,需要在中间加入什莫程序的,尽情指点!!在此谢谢了。
我的源程序如下:训练过程:
P = [100.000 96.167 64.500 67.882 78.000 67.882 64.500 96.167;
111.000 73.539 58.500 73.539 111.000 73.539 58.500 73.539;
152.000 94.045 66.500 94.045 152.000 94.045 66.500 94.045;
113.000 122.330 112.000 123.743 133.000 123.743 112.000 122.330;
116.000 65.053 54.500 91.923 92.000 91.923 54.500 64.053]; %数据带入
T = [0 0 1;0 1 0;0 1 1;1 0 0;1 0 1]; %工件代号
P = P'; %取P和T的转置,保证输入样本向量和目标向量之间列数相等
T = T';
net = newff(minmax(P),[17,3],{'tansig','logsig'},'trainlm'); %建立网络
net.trainParam.epochs = 1000; %设定循环次数为1000
net.trainParam.goal = 0.01; %训练误差为0.01,其余训练参数取默认值
LP.lr = 0.1; %学习速率为0.1
net = train(net,P,T);
之后我加入了一组测试数据:
P = [100.000 96.167 64.500 67.882 78.000 67.882 64.500 96.167;
111.000 73.539 58.500 73.539 111.000 73.539 58.500 73.539;
152.000 94.045 66.500 94.045 152.000 94.045 66.500 94.045;
113.000 122.330 112.000 123.743 133.000 123.743 112.000 122.330;
116.000 65.053 54.500 91.923 92.000 91.923 54.500 64.053]; %数据带入
T = [0 0 1;0 1 0;0 1 1;1 0 0;1 0 1]; %工件代号
P = P'; %取P和T的转置,保证输入样本向量和目标向量之间列数相等
T = T';
net = newff(minmax(P),[17,3],{'tansig','logsig'},'trainlm'); %建立网络
net.trainParam.epochs = 1000; %设定循环次数为1000
net.trainParam.goal = 0.01; %训练误差为0.01,其余训练参数取默认值
LP.lr = 0.1; %学习速率为0.1
net = train(net,P,T);
%测试数据,和训练数据一致
P_test = [152.000 ;94.045; 66.500; 94.045; 152.000; 94.045; 66.500; 94.045];
y = sim(net,P_test)
这样我就能得出这个工件就是三号工件,y=0 1 1,所以为三号。哈哈
但问题出现了,如何能让训练和识别分离呢??请大侠们帮忙。
在我的想象中我是这莫估计的,将训练存如一个文件,然后就load "文档名"。。。。然后就输入数据,得出结果,但我试了,不行,爱。。。怎末办好呢。是不是不是load呢 ,我就这莫想了一下,大家别见笑亚!!