神经网络函数命令
1、网络创建函数
函数名称 | 功能 |
fitnet | 创建函数拟合网络 |
cascadeforwardnet |
串级,前馈神经网络 |
competlayer | 竞争神经层 |
distdelaynet | 分布时滞的神经网络 |
feedforwardnet | 前馈神经网络 |
layrecnet | 分层递归神经网络 |
patternnet | 创建模式识别网络 |
2、网络训练函数
所有的网络均可以使用函数train进行训练 (1)使用语法 [net,tr ]= train(net, X,T,Xi.Ai) (2)功能描述 输入列表中,net为表示网络的结构体变量,X为网络输入,T表示网络的期望,xi和Ai分别为输入延迟和层延迟的初始条件。返回列表中,net表示新生成的网络,tr为训练记录(包含训练性能等)。 通过对 net. train Fcn和 net. train Param的修改,可以设置训练算法以及其他参数。一般来说,训练算法有 trainlm、 trainbr、 trainscg和 trainrp四种可供选择,它们分别为LM反馈、Bayesian校准反馈、共轭梯度反馈和弹性反馈。 3、网络评定函数 网络的评定,一般是指计算其平方误差均值和线性回归,以判断训练后网络的性能。平方误差均值越小越好,线性回归的判断标准为数据是否沿45°线,越靠近表示实际输出与期望输出之间的差距越小。 (1) mse mse函数通过测量平方误差的均值来判断网络的性能。其使用语法为 perf= mse(net, t, y, ew) 其中,net为表示网络的结构体变量,t为期望输出,y为实际输出,ew表示误差权重。 (2) regression 基本使用语法为 [r,m,b]= regression(t,y) 其中,t和y分别为网络的期望输出和实际输出,r表示R值,m为回归线的斜率,b为回归线的偏移量。【例12-1】利用示例数据 house dataset创建一个前馈型神经网络,并对其进行训练以及计算其性能指标。
编写如下 MATLAB程序:
[x,t]=house_dataset; %导入示例数据net=feedforwardnet(15)[net,tr]=train(net,x,t); %训练网络y=net(x); %网络实际输出perf_mse=mse(net,x,t) %计算平方误差均值[r,m,b]=regession(t,y) %计算回归值
结果如下:
house_datanet = Neural Network name: 'Feed-Forward Neural Network' userdata: (your custom info) dimensions: numInputs: 1 numLayers: 2 numOutputs: 1 numInputDelays: 0 numLayerDelays: 0 numFeedbackDelays: 0 numWeightElements: 15 sampleTime: 1 connections: biasConnect: [1; 1] inputConnect: [1; 0] layerConnect: [0 0; 1 0] outputConnect: [0 1] subobjects: input: Equivalent to inputs{1} output: Equivalent to outputs{2} inputs: {1x1 cell array of 1 input} layers: {2x1 cell array of 2 layers} outputs: {1x2 cell array of 1 output} biases: {2x1 cell array of 2 biases} inputWeights: {2x1 cell array of 1 weight} layerWeights: {2x2 cell array of 1 weight} functions: adaptFcn: 'adaptwb' adaptParam: (none) derivFcn: 'defaultderiv' divideFcn: 'dividerand' divideParam: .trainRatio, .valRatio, .testRatio divideMode: 'sample' initFcn: 'initlay' performFcn: 'mse' performParam: .regularization, .normalization plotFcns: {'plotperform', plottrainstate, ploterrhist, plotregression} plotParams: {1x4 cell array of 4 params} trainFcn: 'trainlm' trainParam: .showWindow, .showCommandLine, .show, .epochs, .time, .goal, .min_grad, .max_fail, .mu, .mu_dec, .mu_inc, .mu_max ...(省略一部分)
可以看出结构体net中包含很多信息,通过观察这些内容,可以在以后对net的调用中找到所需要的信息。 4.图像绘制
函数名称 | 功能描述 |
plotconfusion |
图分类混淆矩阵 |
ploterrcorr | 误差自相关时间序列图 |
plotsomtop | 小区自组织映射的拓扑结构 |
plotsomplanes | 小区自组织映射重量的飞机 |
plotsomnd | 小区自组织映射邻居的距离 |
plotsomnc | 小区自组织映射邻居的连接 |
plotsompos | 小区自组织映射重量立场 |
plotsomhits | 小区自组织样本映射图 |
plotresponse | 动态网络图的时间序列响应 |
plotregression | 线性回归情节 |
plotinerrcorr | 图输入错误的时间序列的互相关 |
ploterrhist | 绘制误差直方图 |
plotfit | 绘图功能适合 |
例:绘制上面示例中网络的误差柱状图、性能图和训练状态图。
在上例中继续添加代码
e=t-y;figure(1),ploterrhist(e)figure(2),plotperform(tr)figure(3),plotregression(t,y)
神经网络与simulink
打开simulink模块库的方法有两种: (1)在simulink模块库浏览器中,找到Neural Network Toolbox (2) 直接输入命令neural 可以看出它包含五个子模块库,分别是传递函数、网络输入函数、权值函数、处理函数和控制系统。 下面对五个子模块库分别介绍。 1.Transfer Functions 传递函数模块,都能够接受一个网络输入向量,并相应输出一个网络输出向量。 2.Net input Functions 3.Processing Functions 4.Weight Fuctions 5.Control System神经网络Simulink建模
除了在simulink中进行模块连接,还可以使用gensim函数生成simulink模型。 1.创建模型 gensim能利用工作空间中的神经网络结构体生成simulink模型。该函数语法为gensim(net,st),net为网络结构体,st为指定采样时间。 例:利用gensim函数创建一个前馈型神经网络simulink模型。[x,t]=simplefit_dataset;net=feedforwardnet(10);net=train(net,x,t);gensim(net)
注:如果不进行网格训练,只能得到中间的模块。 2、模型仿真 与一般模型仿真一样点击箭头。
因为只输入了一个常数,所以示波器显示一条直线。 将Constant换成Signal Generator(3;0.2;赫兹) 再次观察
利用GUI自定义神经网络仿真
1.输入nntool 2.单击import进行网络创建,在select区域选择数据来源,通过选择变量,在destination区域确定变量是作何用。 单击New按钮打开创建网络或数据界面,在Data选项卡中可以设置待创建数据的各属性。 3.网格训练train 4.网络仿真simulate 4.显示结果在Output Data区域