Matlab答疑随笔17:很多同学学习神经网络还在使用newff和sim函数,我来说说正确的用法
0.每隔一段时间,就会有同学问到关于newff神经网络相关程序代码的问题,每次看到这样的问题,内心波澜涌起;
这种感觉吧,如鲠在喉,想回复一下,但转念之间,算了,说了也没用;
1.首先说,newff,这个函数
它用来创建了一个前馈反向传播神经网络,它的用法如下:net = newff(P,T,S),具体语法含义不解释,因为网上这方面的内容,可谓铺天盖地,唾手可得;
现在的问题是,如果稍微仔细了解一下,就会发现,newff函数在Matlab R2010b已经被Obsoleted(废止、淘汰),新版本中,推荐的替代方法是feedforwardnet函数;
注:Matlab2022a中,虽然淘汰,但newff函数亲测,仍然可用;
2.接着说,feedforwardnet函数的用法
net = feedforwardnet(hiddenSizes,trainFcn) ,创建前馈神经网络,hiddenSizes指定隐藏层大小,训练函数由 trainFcn 指定;前馈网络由一系列层组成,第一层有来自网络输入的连接,每个后续层都有来自上一个层的连接,最后一个层产生网络的输出;
3. feedforwardnet可以创建基本通用的神经网络,但可能并不常用
在新版本中,除了feedforwardnet函数,Matlab工具箱还另外预设了不同应用场景的神经网络,如拟合神经网络可以使用fitnet函数,模式识别网络可以使用patternnet 函数,级联前向网络(从输入到每层以及从每层到所有后续层,该网络都有额外的连接)可以使用cascadeforwardnet 函数;
之所以有这么多类别的细分,个人认为,是为了应对更广泛更精细的应用需求,毕竟,新世纪新阶段,借着人工智能、大数据、物联网的东风,神经网络在各个领域中,一路狂奔又一路跌打损伤,也是大势所趋;
这几个函数用法就不叨叨念了,在我的视频系列43中都有详细讲述和编程实例演示(43.1、43.11、43.14),也可以自己网上查资料学习;
4.继续说,sim,这个函数
它用来进行神经网络仿真,意思是,神经网络训练之后,输入新的数据,神经网络运算,返回响应数据,用法:y=sim(net,x),net是神经网络对象,x是输入数据,y是响应数据;
下面要说点什么呢,毕竟,这个函数没有被Obsoleted;
下面要说的是,这个用法out了;
5.然后说,如今流行的调用方法
y=net(x)
也就是,直接使用神经网络对象net,把输入数据丢进去,就可以仿真运算,返回结果了,是不是很贱;
6.最后说明
本文整篇都在无事生非,一个两个函数或用法的改进,或者不改进,都是小聪明,能够解决大家在建模、课题、论文中的实际问题,才是大谋略;
7.附图:两种神经网络示意图


相关推荐





End