MATLAB神经网络工具箱 神经元模型 Neuron Model: 多输入,单输出,带偏置 输入:R维列向量 权值:R维行向量 阀值:标量 求和单元 传递函数 输出 常用传递函数 a Wp -b 1 -1 阈值函数 MATLAB函数: hardlim MATLAB函数: hardlims 线性函数 Purelin Transfer Function : a n MATLAB函数: purelin Sigmoid函数 Sigmoid Function : 特性: 值域a∈(0,1) 非线性,单调性 无限次可微 |n|较小时可近似线性函数 |n|较大时可近似阈值函数 MATLAB函数: logsig(对数), tansig(正切) 对数Sigmoid函数 正切Sigmoid函数 单层神经网络模型 R维输入, S个神经元的单层神经网络模型 多层神经网络模型 前馈神经网络 前馈神经网络(feed forward NN):各神经元接受前级输入,并输出到下一级,无反馈,可用一有向无环图表示。 前馈网络通常分为不同的层(layer),第i层的输入只与第i-1层的输出联结。 可见层:输入层(input layer)和输出层(output layer) 隐藏层(hidden layer) :中间层 感知器 感知器(perceptron):单层网络, 传递函数为阀值函数 主要功能是模式分类 感知器的生成 函数newp用来生成一个感知器神经网络 net = newp( pr, s, tf, lf ) net: 函数返回参数,表示生成的感知器网络 pr: 一个R×2矩阵, 由R维输入向量的每维最小值和最 大值组成 s: 神经元的个数 tf: 感知器的传递函数, 默认为hardlim, 可选hardlims lf: 感知器的学习函数,默认为learnp, 可选learnpn net = newp([-2,+2;-2,+2],2) %生成一个二维输入,两个神经元的感知器 感知器的权值和阀值初始化 newp默认权值和阀值为零(零初始化函数initzero). net = newp([-2,+2;-2,+2],2); W=net.IW{1,1} %显示网络的权值 b=net.b{1} %显示网络的阀值 W = 0 0 0 0 b = 0 0 改变默认初始化函数为随机函数rands net.inputweights{1,1}.InitFcn = ‘rands’; net.biases{1}.InitFcn = ‘rands’; net =init(net); %重新初始化 直接初始化定义权值和阀值 net.IW{1,1}=[1 2]; net.b{1}=1 感知器学习 感知器学习算法 权值增量: 阀值增量: 权值更新: 阀值更新: 算法改进 输入样本归一化 权值和阀值训练与学习函数 train net=train(net, P, T) 设计好的感知器并不能马上投入使用. 通过样本训练, 确定感知器的权值和阀值. 输入向量 目标向量 被训练网络 net.tranParam.epochs=10 ; %预定的最大训练次数为10, 感知器经过最多训练10次后停止, adapt net=adapt(net, P, T) 自适应训练函数 权值和阀值学习函数 learnp dW=learnp(W,P,Z,N,A,T,E,D,gW,gA,LP,LS) dW:权值或阀值的变化矩阵 W:权值矩阵或阀值向量 P:输入向量 T:目标向量 E:误差向量 其他可以忽略,设为[ ] learnpn 归一化学习函数 网络仿真函数 sim a = sim(net, P) 输入向量 网络输出 分类结果显示绘图函数 plotpv plotpv(P,T) plotpc plotpc(W,b) 画输入向量的图像 画分类线 根据给定的样本输入向量P和目标向量T, 以及需分类的向量组Q, 创建一个感知器, 对其进行分类. 例: 创建一个感知器 P=[-0.5 -0.6 0.7;0.8 0 0.1]; %已知样本输入向量 T=[1 1 0]; %已知样本目标向量 net=newp([-1 1;-1 1],1); %创建感知器 handle=plotpc(net.iw{1},net