matlab的神经网络工具箱

BP神经网络的入门文章可以参考这篇博客http://www.cnblogs.com/wengzilin/archive/2013/04/24/3041019.html

对于matlab神经网络工具箱中的性能函数performFcn 可以使用 doc network
对于训练参数可以使用 doc traingdx

代码如下所示

matrix = [ 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0]
%% 输入数据变换
input = matrix(:,1:end-1);
target = matrix(:,end);
input=input';
target=target';
target=full(ind2vec(target+1));

%设置随机种子
setdemorandstream(pi)

%% 新建BP神经网络,并设置参数 
% net = feedforwardnet(10);

%使用含有一层隐含层的模型,隐含层有10个神经元。调用Matlab的patternnet函数
%patternnet函数的参数有(hiddenSizes,trainFcn,performFcn)三个。hiddenSizes默认值是10
%可以用数组表示多个隐含层。trainFcn默认值是‘trainscg’,performFcn默认是‘crossentropy’。
%如果想要有两个隐含层,每层的神经元都是10个,则可以写成net = patternnet([10,10]) ;
net = patternnet(10);
net.trainParam.epochs=1000; %最大训练次数(缺省值为10)
net.trainParam.show=25;%显示训练迭代过程(NaN表示不显示,缺省为25),每25次显示一次
net.trainParam.showCommandLine=0;%显示命令行(默认值是0) 0表示不显示
net.trainParam.showWindow=1; %显示GUI(默认值是1) 1表示显示
net.trainParam.goal=0;%训练要求精度(缺省为0)
net.trainParam.time=inf;%最大训练时间(缺省为inf)
net.trainParam.min_grad=1e-6;%最小梯度要求(缺省为1e-10)
net.trainParam.max_fail=5;%最大失败次数(缺省为5)
net.performFcn='mse';%性能函数
% 训练神经网络模型
net= train(net,input,target);
disp('BP神经网络训练完成!');

%% 使用训练好的BP神经网络进行预测
y= sim(net,input);
plotconfusion(target,y);
disp('预测完成!');

结果如图所示
matlab的神经网络工具箱_第1张图片
上图是分类器的效果、绿色表示分类器的分类结果和测试数据的label一致;红色表示两者结果不一致。红色区域内的百分数越小,说明分类器结果的误差越小,分类结果越好。如果误差过大,则需要增加样本再行训练或者增加隐含层的神经元个数。

对于net.trainParam.max_fail的意义可以参考http://blog.csdn.net/q1302182594/article/details/45772253

对于matlab的神经网络工具箱的强大功能,这里只是冰山一角,对于工具箱里其他很多概念的解释都是不清楚的。。。还需要加油呀!!!

你可能感兴趣的:(matlab的神经网络工具箱)