设[P,T]是训练样本,[X,Y]是测试样本;

net=newrb(P,T,err_goal,spread); %建立网络

q=sim(net,p);

e=q-T;

plot(p,q); %画训练误差曲线

q=sim(net,X);

e=q-Y;

plot(X,q); %画测试误差曲线

训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈网络。这需要4个输入参数。

第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。

第二个参数是一个设定每层神经元个数的数组。

第三个参数是包含每层用到的传递函数名称的细胞数组。

最后一个参数是用到的训练函数的名称。

举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元(3),第二层有一个神经元(1)。

第一层的传递函数是tan-sigmoid,输出层的传递函数是linear。

输入向量的第一个元素的范围是-1到2[-1 2],输入向量的第二个元素的范围是0到5[0 5],训练函数是traingd。

net=newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd');

这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。

我们可能要多次重新初始化权重或者进行自定义的初始化。

下面就是初始化的详细步骤。

在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。这个函数接收网络对象并初始化权重和偏置后返回网络对象。

下面就是网络如何初始化的:

net = init(net);

我们可以通过设定网络参数net.initFcn和net.layer{i}.initFcn这一技巧来初始化一个给定的网络。

net.initFcn用来决定整个网络的初始化函数。前馈网络的缺省值为initlay,它允许每一层用单独的初始化函数。

设定了net.initFcn ,那么参数net.layer{i}.initFcn 也要设定用来决定每一层的初始化函数。

对前馈网络来说,有两种不同的初始化方式经常被用到:initwb和initnw。initwb函数根据每一层自己的初始化参数(net.inputWeights{i,j}.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands,它使权重在-1到1之间随机取值。这种方式经常用在转换函数是线性函数时。initnw通常用于转换函数是曲线函数。它根据Nguyen和Widrow[NgWi90]为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦的分布在输入空间。

它比起单纯的给权重和偏置随机赋值有以下优点:

(1)减少神经元的浪费(因为所有神经元的活动区域都在输入空间内)。

(2)有更快的训练速度(因为输入空间的每个区域都在活动的神经元范围中)。

初始化函数被newff所调用。因此当网络创建时,它根据缺省的参数自动初始化。init不需要单独的调用。可是我们可能要重新初始化权重和偏置或者进行自定义的初始化。例如,我们用newff创建的网络,它缺省用initnw来初始化第一层。如果我们想要用rands重新初始化第一层的权重和偏置,我们用以下命令:

net.layers{1}.initFcn = 'initwb';

net.inputWeights{1,1}.initFcn = 'rands';

net.biases{1,1}.initFcn = 'rands';

net.biases{2,1}.initFcn = 'rands';

net = init(net);

IW: 输入层到隐含层的权重矩阵

LW: 隐含层和输出层间的权重矩阵

b: 阀值向量

如网络为net, 输入层和输出均为一个接点情况下,则用

net.IW{1,1}可以看到第一个输入接点到第一隐含层的权重向量;

net.LW{2,1}可以看到隐含层到输出层的权值向量;

net.b{1,1}是隐含层的阀值向量,

net.b{2,1}是输出接点的阀值;

在多输入输出下先用

net.IW

net.LW

net.b

查看各矩阵结构,再相应用net.IW{?,?}等语句查到相关的向量

______________________________________________________________________________________________

clear all;

%define the input and output

p= [974 874 527;

388 466 1764;

1316 2439 2251;

1836 2410 1860;

1557 2301 1578;

1490 1877 2749;

1513 1278 2026;

1070 1561 2794;

1347 2415 3306;

1324 2746 1233;

1383 1463 1847;

1282 0 2347];

t=[19797 24282 34548];

% 创建bp网络和定义训练函数

% 这里是为了方便而建立一个矩阵,注意是12x2,不是3x2

pr=[ 527 974;

388 1764;

1316 2439;

1836 2410;

1557 2301;

1490 2749;

1278 2026;

1070 2794;

1347 3306;

1233 2746;

1383 1847;

0 2347]

net=newff(pr,[15,1],{'tansig' 'purelin'},'trainlm'); %这里要加入输出层的转移函数,一般是trainlm

net.trainparam.goal=50;

net.trainparam.epochs=5000;

%训练神经网络

[net,tr]=train(net,p,t);

%输出训练后的权值和阈值

iw1=net.IW{1};

b1=net.b{1};

lw2=net.LW{2};

b2=net.b{2};

%存储训练好的神经网络

save netkohler net

______________________________________________________________________________________________

怎样知道matlab已经训练好的神经网络的权值、步长以及阙值

用matlab训练神经网络时不需输入权值、步长以及阙值,如果我想知道matlab已经训练好的神经网络的权值、步长以及阙值该怎末操作?

训练好的权值、阈值的输出方法是:

输入到隐层权值: w1=net.iw{1,1}

隐层阈值: theta1=net.b{1}

隐层到输出层权值: w2=net.lw{2,1};

输出层阈值: theta2=net.b{2}

______________________________________________________________________________________________

帮我看看matlab的这段程序(有关神经网络BP算法)

在一位老师的讲义上看到的程序,但是有些东西不太明白,请求帮助

程序如下:

****************************************************************

clf;

figure(gcf)

echo on

%NEWFF — 建立一个BP网络

%TRAIN — 对BP网络进行训练

%SIM — 对BP网络进行仿真

pause

P = -1:0.1:1;

T = [-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 ...

.1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 ...

.3072 .3960 .3449 .1816 -.0312 -.2189 -.3201];

plot(P,T,'+');

title('Training Vectors');

xlabel('Input Vector P');

ylabel('Target Vector T');

pause

net=newff(minmax(P),[5 1],{'tansig' 'purelin'},'traingd','learngd','sse');

echo off

k = pickic;

if k == 2

net.iw{1,1} = [3.5000; 3.5000; 3.5000; 3.5000; 3.5000];

net.b{1} = [-2.8562; 1.0774; -0.5880; 1.4083; 2.8722];

net.lw{2,1} = [0.2622 -0.2375 -0.4525 0.2361 -0.1718];

net.b{2} = [0.1326];

end

net.iw{1,1}

net.b{1}

net.lw{2,1}

net.b{2}

pause echo on me=8000; net.trainParam.show=10; net.trainParam.goal=0.02; net.trainParam.lr=0.01; A=sim(net,P); sse=sumsqr(T-A); for i=1:me/100 if sse>net.trainparam.goal,i=i-1;break,end net.trainParam.epochs=100; [net,tr]=train(net,P,T); trp((1+100*(i-1)):(max(tr.epoch)+100*(i-1)))=tr.perf(1:max(tr.epoch)); A=sim(net,P); sse=sumsqr(T-A); plot(P,T,'+'); hold on plot(P,A) hold off pause end message=sprintf('Traingd, Epoch %%g/%g, SSE %%g\n',me); fprintf(message,(max(tr.epoch)+100*(i-1)),sse) plot(tr) [i,j]=size(trp); hold on plot(1:j,net.trainParam.goal,'r--') hold off title('Error Signal') xlabel('epoch') ylabel('Error') p = 0.5; a = sim(net,p) echo off

matlab newff激活函数,matlab神经网络newff函数的用法相关推荐

  1. Matlab中print, fprint, fscanf, disp函数的用法

    最近一直在用python,导致学习的一些函数就有点混淆,趁着这会儿看代码,就再回顾下Matlab中print, fprint, fscanf, disp函数的用法 一.print() 函数可以把函数图 ...

  2. 用matlab求函数极限,matlab求解极限问题(limit函数的用法)

    本文介绍利用MATLAB求解函数或序列的极限问题,顺便介绍limit函数的用法.内容主要包括单变量函数的极限和多变量函数的极限. 目录 单变量函数的极限 极限的定义 普通极限 L=lim⁡x→x0f( ...

  3. matlab 二维线图绘制函数 plot用法参数

    https://ww2.mathworks.cn/help/matlab/ref/plot.html

  4. matlab中ndims函数,matlab中的size(),length(),ndims()函数的用法

    1.size()用法: size(a)表示矩阵每个维度的长度 比如size([1 2 3;4 5 6]) 等于[2 3]: 表示他有2行3列. size([1 2 3]) 等于[1 3]: 表示他有1 ...

  5. matlab神经网络newff函数的用法

    转自:matlab神经网络newff函数的用法,保存在此以学习. 设[P,T]是训练样本,[X,Y]是测试样本: net=newrb(P,T,err_goal,spread); %建立网络 q=sim ...

  6. matlab里newff,新版matlab中神经网络训练函数newff的使用方法

    新版matlab中神经网络训练函数newff的使用方法 新版 Matlab 中神经网络训练函数 Newff 的使用方法一. 介绍新版 newffSyntax net = newff(P,T,[S1 ...

  7. matlab newff,新版Matlab中神经网络训练函数Newff的使用方法.doc

    新版Matlab中神经网络训练函数Newff的使用方法 介绍新版newff Syntax net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, BTF, ...

  8. 新版matlab newff,[转载]新版Matlab中神经网络训练函数Newff的使用方法

    新版Matlab中神经网络训练函数Newff的使用方法 一. 介绍新版newff Syntax · net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, ...

  9. Matlab newff 训练时间,新版Matlab中神经网络训练函数Newff的使用方法

    新版Matlab中神经网络训练函数Newff的使用方法 一. 介绍新版newff Syntax · net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, ...

最新文章

  1. 已经导入依赖,但是Cannot resolve symbol“registerFunction“
  2. 最后解密的两弹元勋,众帅之帅朱光亚。
  3. Scrapy的log日志功能
  4. 【推荐系统】16篇最新推荐系统论文送你
  5. oracle数据库应用中实现汉字“同音”查询
  6. Python3.6 word批量转换为txt提取
  7. webgl存本地文件_Unity发布WebGL后加载本地文件
  8. Matlab创建M文件以及程序控制
  9. 数据结构与算法--回溯的理解以及实现
  10. 阿里云服务器ECS有哪些功能特性?
  11. 数据结构入门6-2(图 - 图的应用)
  12. linux 查看用户权限组,linux用户组及权限
  13. mac如何用移动随E行连接有线网络(中国计量大学)
  14. BZOJ【1082】栅栏
  15. 基音检测算法的性能:Performance Evaluation of Pitch Detection Algorithms
  16. 树莓派4B安装tensorflow2.0.0和keras2.3.1
  17. XSS挑战之旅(1-9)
  18. free -m 详解
  19. 小信号放大电路的频率特性
  20. 详解PROFINET通讯协议

热门文章

  1. imgaug数据增强神器:第三章 调用多核CPU
  2. 新经济业态下的搬家物流服务要完善信用体系建设
  3. 从深圳流水线女工到谷歌程序员:改变命运的人,都做对了什么?
  4. mysql字段用json格式,mybatis框架,传前端格式转意问题
  5. android文件传输到电视,快牙及时分享 安卓手机传输文件最佳方案
  6. 【MicroPython ESP32】通过sdcard模块读取SD卡实例
  7. jq获取当前周从星期一到星期天的日期
  8. python logistic回归 pvalue_查看sklearn的线性回归系数的p value
  9. java制作水效果_java实现图片加水印效果
  10. python载入图片序列_【Python】序列和图片之间的转化