ANN 人工神经前馈网络
实现步骤
学习过程:
1) 设定网络参数
2) 以均匀随机初始化加权值矩阵W,每个神经结点的偏权值向量 。
3) 输入一个训练样本的输入向量X与目标输出向量T
4) 计算每层网络的输出值向量Y
5) 从输出层开始计算误差并反传
6) 计算加权值矩阵修正量 W
7) 更新加权值矩阵W,偏权值向量
8) 重复步骤3至步骤7,直至收敛或执行一定数目的学习循环
预测步骤
1) 输入测试样本的输入向量X,得出输出向量Y,得出类别向量Y’
2) 比较类别向量Y’,目标向量T,得出计算的准确率
Matlab实现:
clc;
clear;
trainInput=load('F:/Dataset/synth.tr');
trainTarget=trainInput(:,3);
trainInput=trainInput(:,[1,2]);
trainInput=trainInput';
trainTarget=trainTarget';
testInput=load('F:/Dataset/synth.te');
testTarget=testInput(:,3);
testInput=testInput(:,[1,2]);
testInput=testInput';
testTarget=testTarget';
net=newff([-1.5 1.5; -1.5 1.5],trainTarget,[3,3],{'tansig','tansig'},'traingdm');
net.trainparam.goal=0.000001;%神经网络训练的目标误差
net.trainparam.epochs=10000; %最大迭代次数
net.trainparam.lr=0.01; %学习效率
net.trainParam.max_fail = 15;
net=train(net,trainInput,trainTarget);
rst=sim(net,testInput);
[m,n]=size(rst);
success=0;
for i=1:m
for j=1:n
if(rst(i,j)<0.5 && testTarget(i,j)==0)
success=success+1;
end
if(rst(i,j)>=0.5 && testTarget(i,j)==1)
success=success+1;
end
end
end
accuracy=success/n