神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建

 前面介绍了神经网络工具箱GUI的使用,它功能强大可以直接生成脚本。但是函数命令的灵活性是GUI所不及的。也应该有所了解。

神经网络函数命令

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)

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第1张图片

神经网络与simulink

打开simulink模块库的方法有两种: (1)在simulink模块库浏览器中,找到Neural Network Toolbox   (2) 直接输入命令neural

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第2张图片

可以看出它包含五个子模块库,分别是传递函数、网络输入函数、权值函数、处理函数和控制系统。 下面对五个子模块库分别介绍。 1.Transfer Functions

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第3张图片

传递函数模块,都能够接受一个网络输入向量,并相应输出一个网络输出向量。 2.Net input Functions

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第4张图片

893dce59411424e9b0e95a0fba4e8b9a.png

3.Processing Functions

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第5张图片

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第6张图片

4.Weight Fuctions

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第7张图片

5.Control System

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第8张图片

神经网络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)

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第9张图片

注:如果不进行网格训练,只能得到中间的模块。 2、模型仿真 与一般模型仿真一样点击箭头。

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第10张图片

因为只输入了一个常数,所以示波器显示一条直线。 将Constant换成Signal Generator(3;0.2;赫兹) 再次观察

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第11张图片

利用GUI自定义神经网络仿真

1.输入nntool

神经网络 mse一直不变_MATLAB中的神经网络工具箱(2)函数命令及模型搭建_第12张图片

2.单击import进行网络创建,在select区域选择数据来源,通过选择变量,在destination区域确定变量是作何用。 单击New按钮打开创建网络或数据界面,在Data选项卡中可以设置待创建数据的各属性。 3.网格训练train 4.网络仿真simulate 4.显示结果在Output Data区域

你可能感兴趣的:(神经网络,mse一直不变)