基于matlab或C#的神经网络编程
PS:原理什么的我都懂,就是编程的时候不知道如何下手,希望指导。如果是能推荐什么帖子能一步步教我完成神经网络的编写也行,如果和我预期的符合,我会额外加分 展开
1. 人工神经元( Artificial Neuron )模型
人工神经元是神经网络的基本元素,其原理可以用下图表示:
图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为:
图中 yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数 ( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为:
若用X表示输入向量,用W表示权重向量,即:
X = [ x0 , x1 , x2 , ....... , xn ]
则神经元的输出可以表示为向量相乘的形式:
若神经元的净激活net为正,称该神经元处于激活状态或兴奋状态(fire),若净激活net为负,则称神经元处于抑制状态。
图1中的这种“阈值加权和”的神经元模型称为M-P模型 ( McCulloch-Pitts Model ),也称为神经网络的一个处理单元( PE, Processing Element )。
用法可以看http://mcm.ustc.edu.cn/download/matlab16.pdf
P = [1.24 1.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3;
1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96];
%输出
T = [1 1 1 1 1 1 1 1 1 0 0 0 0 0 0];
%测试样本
p = [1.24, 1.28, 1.4; 1.8, 1.84, 2.04];
net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingdx');
net.trainParam.show=50;
net.trainParam.lr=0.1;
net.trainParam.lr_inc=1.05;
net.trainParam.epochs=300;
net.trainParam.goal=0.01;
%net.trainParam.mu_dec=0.1;
%net.trainParam.mu_inc=7;
[net,tr]=train(net,P,T);
A=sim(net,P);
a=sim(net,p);