MATLAB程序代码--神经网络基础问题整理 下载本文

MATLAB程序代码--神经网络基础问题整理

所选问题及解答大部分来源于http://www.2nsoft.cn/bbs/

资料大部分为江南一纪收集整理 对其他参与整理的版友(不一一列举)及 资料的原创者一并表示感谢

因江南对神经网络的理解也不是很多 错误之处难勉 请谅解

有什么问题可以来http://www.2nsoft.cn/bbs/ 的『人工神经网络专区』交流

***************************************************************** 1神经网络的教材哪本比较经典 神经网络原理

Simon Haykin ? 叶世?史忠植译 神经网络设计 神经网络书籍

神经网络模型及其matlab仿真程序设计 周开利

(对神经网络工具箱函数及里面神经网络工具箱的神经网络模型的网络对象及其属性做了详细的论述,后者在神经网络理论与matlab7实现那本书里面是没有的) 神经网络理论与matlab7实现

(这本书对初学这入门还是挺不错的,看过了,就对matlab神经网络工具箱有教好的了解) 神经网络设计(我认为这是一本很好的书,讲理论不是很多,看过之后就会对神经网络的原理有更好的了解)

神经网络结构设计的理论与方法(这本书对提高网络的泛化能力的一些方法做了讲述,并且书后有程序,对网络结构的设计应该是挺有帮助的) 摘自 给初学matlab神经网络的一点建议

http://www.2nsoft.cn/bbs/read.php?tid=1111&keyword=

2 神经网络理论的发展与前沿问题

神经网络理论的发展与前沿问题 刘永?

摘 要 系统地论述了神经网络理论发展的历史和现状,在此基础上,对其主要发展趋向和所涉及的前沿问题进行了阐述.文中还作了一定的评论,并提出了新的观点. 关键词 神经网络理论,神经计算,进化计算,基于神经科学和数学的研? 查看原文

http://www.2nsoft.cn/bbs/read.php?tid=5374&keyword=é??-í???

3 神经网络的权值和阈值分别是个什么概念??

权值和阈值是神经元之间的连接,将数据输入计算出一个输出,然后与实际输出比较,误差反传,不断调整权值和阈值 假如p1=[1 1 -1]'; p2=[1 -1 -1]'; 属于不同的类

须设计分类器将他们分开

这里用单层神经元感知器

初始权值 w=[0.2 0.2 0.3] b=-0.3 输出 a1 a2

a1=hardlims(w*p1+b) a2=hardlims(w*p2+b)

如果不能分开,还须不断调整w,b 这里说明一下权值w 阈值b 而已

简单地说,阈值也可以看作一维权值,只不过它所对应的那一维样本永远是 -1(也有的书上说是 1),这样就把输入样本增加了一维,更有利于解决问题.

http://www.2nsoft.cn/bbs/read.php?tid=6078&keyword=é??-í???

4 神经网络归一化

看了研学和ai创业研发俱乐部神经网络版及振动论坛部分帖子内容,对归一化做一下整理,冒昧引用了一些他人的观点,有的未列出其名,请谅解

-------------------------------------------------------------------------------------------------------

关于神经网络归一化方法的整理

由于采集的各数据单位不一致,因而须对数据进行[-1,1]归一化处理,归一化方法主要有如下几种,供大家参考:(by james) 1、线性函数转换,表达式如下:

y=(x-MinValue)/(MaxValue-MinValue)

说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。 2、对数函数转换,表达式如下: y=log10(x)

说明:以10为底的对数函数转换。 3、反余切函数转换,表达式如下: y=atan(x)*2/PI

-------------------------------------------------------------------------------------------------------

归一化是为了加快训练网络的收敛性,可以不进行归一化处理

归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布;

当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。

归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。

但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。

-------------------------------------------------------------------------------------------------------

关于用premnmx语句进行归一化:

premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T) 其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。mint和maxt分别为T的最小值和最大值。

premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。

我们在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx。 下面介绍tramnmx函数: [Pn]=tramnmx(P,minp,maxp)

其中P和Pn分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的最大值和最小值。 (by terry2008)

--------------------------------- matlab中的归一化处理有三种方法 1. premnmx、postmnmx、tramnmx 2. restd、poststd、trastd 3. 自己编程

具体用那种方法就和你的具体问题有关了 (by happy)

---------------------------------- pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm; 和for i=1:27

p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); end 可以归一到0 1 之间

0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分别表示样本最大值和最小值。 这个可以归一到0.1-0.9

5 如何查看BP神经网络训练后的权值和阈值呀!!

训练好的权值、阈值的输出方法是: 输入到隐层权值:w1=net.iw{1,1} 隐层阈值:theta1=net.b{1}

隐层到输出层权值:w2=net.lw{2,1}; 输出层阈值:theta2=net.b{2} 6 训练好的BP神经网络如何保存呀

用命令save filename net;保存网络, 调用时用命令load filename net;

7 用BP逼近非线性函数,如何提高训练精度啊 (1)调整网络结构

增加网络的层数可以进一步降低误差 ,提高精度但会使网络复杂化 ,从而增加网络的训练时间 。精度的提高实际上也可以通过增加隐层神经 元的数目来获得 ,其效果更容易观察和掌握 ,所以应优先考虑 。 (2)初始值选取