① 神经网络工具箱与编程实现哪个更好
首先说一下神经网络工具箱,在我刚刚接触神经网络的时候,我就利用工具箱去解决问题,这让我从直观上对神经网络有了了解,大概清楚了神经网络的应用范围以及它是如何解决实际问题的。
工具箱的优势在于我们不用了解其内部的具体实现,更关注于模型的建立与问题的分析,也就是说,如果抛开算法的错误,那么用工具箱来解决实际问题会让我们能把更多的精力放在实际问题的模型建立上,而不是繁琐的算法实现以及分析上。
其次谈谈编程实现神经网络,由于个人能力有限,所以只是简单的编程实现过一些基本神经算法,总的体会就是编程的过程让我对算法有了更透彻的理解,可以更深入的分析其内部运行机制,也同样可以实现一下自己的想法,构建自己的神经网络算法。
以上是我对两个方法的简单理解。那究竟哪个方法更好些呢?我个人的看法是要看使用者的目的是怎样的。
如果使用者的目的在于解决实际问题,利用神经网络的函数逼近与拟合功能实现自己对实际问题的分析与模型求解,那我的建议就是利用神经网络工具箱,学过编程语言的人都知道,无论用什么编程语言将一个现有的算法编程实现达到可用的结果这一过程都是及其繁琐与复杂的,就拿简单的经典BP神经网络算法来说,算法本身的实现其实并不难,可根据不同人的能力,编出来的程序的运行效率是大不相同的,而且如果有心人看过matlab的工具箱的源码的话,应该能发现,里面采用的方法并不完全是纯粹的BP经典算法,一个算法从理论到实现还要依赖与其他算法的辅助,计算机在计算的时候难免出现的舍入误差,保证权值的时刻改变,这都是编程人员需要考虑的问题,可能还有很多的问题
这样的话,如果自己单人编程去实现神经网络来解决实际问题的话,整体效率就没有使用工具箱更好。
如果使用者的目的在于分析算法,构造新的网络的话那当然首推自己编程实现。个人的感觉就是,如果真的是自己完全编程实现的话,对算法会有很深入的理解,在编程的调试过程中,也会领悟到很多自己从前从来没有考虑过的问题,像权值的初始的随机选取应该怎么样,将训练样本按什么顺序输入等,这都是编程实现所要考虑的问题,不同的方法得到的结果会有很大的差距。
② 复杂神经网络模型用什么软件
bp神经网络能用MATLAB,
理论上编程语言都可以,比如VB,C语言,过程也都是建模、量化、运算及结果输出(图、表),但是matlab发展到现在,集成了很多的工具箱,所以用的最为广泛,用其他的就得是要从源码开发入手了。
bp神经网络是一种算法,只要是算法就可以用任何软件工具,只要编译器或者解释器支持,c,c++,python,来进行实现,只是实现时的复杂程度有区别而已
③ 直接用神经网络工具箱构建bp神经网络,希望能给个例子说明,有注解最好,本人matlab新手,谢谢
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层专前馈网络,是目前应用属最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
附件就是利用神经网络工具箱构建BP神经网络进行预测的实例。如果要用可视化工具,可以在命令窗口输入nntool.
④ 如何用MATLAB的神经网络工具箱实现三层BP网络
使用神经网络工具箱可以非常简便地实现网络建立和训练,实例代码如下:
%%BP算法
functionOut=bpnet(p,t,p_test)
%p,t为样本需要提前组织好
globalS1
net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm');%trainlm训练函数最有效
%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法
net.trainParam.epochs=1000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;
net.trainParam.showWindow=false;%阻止训练窗口的弹出
net.trainParam.showCommandLine=false;%阻止训练窗口的弹出
net=train(net,p,t);
Out=sim(net,p_test);
end
上面的代码不完整,完整的带训练样本数据的程序见附件。