Matlab自带的神经网络工具箱功能还蛮强大的,好像在Matlab 2010b以后的版本都有,操作步骤也非常简单。可以直接在APP栏下拉菜单机器学习工具里面找到,总共有四种工具箱可以选择。
![c97a6e890774ba03a2e53db71b4f3edd.png](https://i-blog.csdnimg.cn/blog_migrate/6940c62990d214567928b2c070142d11.jpeg)
也可以直接在命令行输入“nnstart”,会自动跳出神经网络的工具箱供你选择。
![5a246bccb883e57ce104082d4dff11b9.png](https://i-blog.csdnimg.cn/blog_migrate/95afebed5a5451e35aa5a505e8b155e1.jpeg)
以拟合工具箱为例(我一般用的比较多),Fitting app也可以直接通过命令行“nftool”打开,基本界面就是这个样子,它是建立一个单隐藏层的神经网络来做数据拟合,输入和输出数据都可以是多维的,隐藏层的神经元个数可以自己调整。
![2fb255330a66cf39e889ae1fcf384217.png](https://i-blog.csdnimg.cn/blog_migrate/9f1a8065506222a983eee624e247aade.jpeg)
![7d666f04f093fdfbc9fda60a20923800.png](https://i-blog.csdnimg.cn/blog_migrate/612e80036b8ace253da13ceaaad89f3e.jpeg)
接下来是对你的样本数据进行划分,划分成训练集、验证集和测试集,这可以根据自己需要设定,比如70%、15%、15%就是不错的选择,验证集和测试集的区别就在于验证集也是参与训练过程的,训练过程中在训练集训练好后会代入验证集进行验证,测试集就仅仅只是做个预测。
![7617d4e331d5a23e70e87c392bcb0844.png](https://i-blog.csdnimg.cn/blog_migrate/4aa7ec35ad680cdf09b23c3f0df7a7f7.jpeg)
下一步设置隐藏层神经元个数,默认是10个,这个根据情况自己调整,一般不要设的过大,不仅训练速度很慢而且容易过拟合。
![cee0dbd471547812f7b328511f6ce508.png](https://i-blog.csdnimg.cn/blog_migrate/7bb8bc8d9c660d0804e187de7d40004d.jpeg)
训练算法提供了三种选择,常用的是LM算法,就是梯度下降法和高斯牛顿法的结合,训练速度比较快而且准确率也不错,其他两种算法也可以尝试,当然由于权值初始化是随机的,有时候多训练几次才会得到想要的结果。
![8c9d7c1cc77bd26048dea976ff67204f.png](https://i-blog.csdnimg.cn/blog_migrate/6bd9643501b6294165e3077c867bc0d9.jpeg)
训练结束后可以在plots查看各种图表。
![4d1100beab4e11a20a9295662cdcf09c.png](https://i-blog.csdnimg.cn/blog_migrate/d7bdc392f162cdf89726acea2c1edcb9.jpeg)
最后会出现这样的截面,你可以选择第一个“Simple Script”,它会自动生成一个代码的脚本文件,你可以保存下来,下次直接在脚本里面修改参数就可以了,还可以自己添加循环什么的。
![863c132c1183c9168c5a78dc8899e6a6.png](https://i-blog.csdnimg.cn/blog_migrate/d114e0c248dce0d4863f1489b82a852c.jpeg)
总的来说,Matlab这种自带的工具箱真的帮我们省去了很多操作,但最根本的还是要理解神经网络的原理。