QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2586|回复: 1
打印 上一主题 下一主题

[问题求助] 谁可以分享一下,神经网络工具箱使用说明?

[复制链接]
字体大小: 正常 放大

52

主题

6

听众

495

积分

升级  65%

  • TA的每日心情
    开心
    2014-7-12 17:09
  • 签到天数: 115 天

    [LV.6]常住居民II

    自我介绍
    数学本科

    群组数学建模培训课堂1

    跳转到指定楼层
    1#
    发表于 2013-8-20 16:42 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    使用说明,不要理论推导,
    $ p5 g: ]3 c1 W谢谢,在线等~* f0 z( S0 n2 k6 G9 c! n4 f
    zan
    转播转播 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    gt93        

    47

    主题

    18

    听众

    880

    积分

    白凤

  • TA的每日心情
    慵懒
    2018-4-6 14:09
  • 签到天数: 201 天

    [LV.7]常住居民III

    自我介绍
    数学爱好者

    社区QQ达人

    群组Matlab讨论组

    群组Linux推广

    群组第三届数模基础实训

    群组2013年数学建模国赛备

    群组数学建摸协会

    神经网络工具箱nntool的使用方法# B3 d; ^& Q4 Y
    这是根据我个人经验整理出来的关于如何使用nntool神经网络工具箱进行“数据训练”的方法:
    1 o) z- H3 i7 M' ]$ C1 `, y' f
    . L  o6 {. H/ g5 g/ B" Y4 T1. 在命令窗口键入nntool命令打开神经网络工具箱;
    $ b  w4 ]3 v5 H. X! x1 x1 y) R7 X& }9 E+ s
    2. 点击Import按钮两次,分别把输入向量和目标输出加入到对应的窗口([Inputs]和[Targets])中,有两种可供选择的加入对象(点击Import后可以看见),一种是把当前工作区中的某个矩阵加入,另一种是通过.mat文件读入;% N9 `! E+ o: K7 X% w. y, A  z# [

    / S( H3 n% ]3 h  ^! Z* }3. 点击[New Network]按钮,填入各参数:(以最常用的带一个隐层的3层神经网络为例说明,下面没有列出的参数表示使用默认值就可以了,例如Network Type为默认的BP神经网络);2 L  |( k4 Z0 \* ?

    , [5 u! p  ^% H; Q& G) _# u, Y1) Input Range――这个通过点击Get From Input下拉框选择你加入的输入向量便可自动完成。$ c- i: g2 v& W5 w6 \/ \8 o

    # ?8 q3 K5 f+ A" _  P3 u" b: |5 O2) Training Function——最好使用TRAINSCG,即共轭梯度法,其好处是当训练不收敛时,它会自动停止训练,而且耗时较其他算法(TRAINLM, TRAINGD)少,也就是收敛很快(如果收敛的话),而且Train Parameters输入不多,也不用太多的技巧调整,一般指定迭代次数、结果显示频率和目标误差就可以了(详见下文)。0 z0 |( a# r% f  s

    + {4 ~" k( L8 s4 z+ `# g3) Layer 1 Number of Neurons——隐层的神经元个数,这是需要经验慢慢尝试并调整的,大致上由输入向量的维数、样本的数量和输出层(Layer2)的神经元个数决定。
    % n; z4 i9 J7 H+ J1 O1 ?; Z4 ?, J
    / V/ ]2 l, y' O" c4) Layer 1 Transfer Function——一般用TANSIG(当然也可以LOGSIG),即表示隐层输出是[-1,1]之间的实数,与LOGSIG相比范围更大。  i6 _  I1 d2 C. ]

    7 x. k  E# i5 d& j" ]5 N% p+ H4 h* h4 u5) Layer 2 Number of Neurons——输出层的神经元个数,对于两类问题,个数为1,取值分别为0和1,对于多类问题,个数为10,取值为等。
    4 ]/ ~0 q" C( Q7 h1 h) r' E) a2 R+ U! U% V/ o4 c
    6) Layer 2 Transfer Function——如果是模式识别的两类(或者多类)问题,一般用LOGSIG,即表示输出层的输出是[0,1]之间的实数。
    3 K" {) s* @& V: P
    $ n" K5 o! ]2 b2 u$ O# T2 q* H所有参数输入后,可以先用View按钮预览一下,没有问题的话就可以Create了。另外,网络创建完毕后,如果需要手动设置权重的初始值,按View按钮后有个Initialize选项卡,在那里可以设定。当然了,可以不自行设定,这时候matlab执行默认的程序进行权重的初始化(没有具体研究过,可能是随机设定)。" F" j: J& D! J7 u3 f& k/ B
    , K; H, Y- H, p5 X) J0 h: S4 t  T
    4. 点击Train按钮,到达Training Info选项卡,在输入向量[Inputs]和目标输入向量[Targets]下拉框中选择你要训练的向量(即第二步加入的对象),然后到达Train Parameters选项卡,填入适当的迭代次数[epochs](一般先设置一个较小的数如200,然后观察收敛结果,如果结果窗口的收敛曲线衰减较快,则表示之前的参数比较有效,因此可填入2000或更大的数目使得网络收敛,否则修改之前的参数)、结果显示频率[show](例如要每隔500次迭代显示结果窗口,则填500)和目标误差[goal](这个与第2步中的“Performance Function”有关,如果使用默认的MSE,则一般满足“goal*样本数量<0.5”就可以了),就可以开始训练了(按钮[Train Network]),如果结果收敛(训练误差不大于目标误差,即蓝色线到达黑色线位置)就OK了。
      E) {* i1 Q: m3 h! V* {
    3 f  @7 d' }2 a) n5 H1 _----------------------------------------------------------------------------------------------------------------------------------------------; X' S3 c& D, A3 F
    后话:上面只介绍了“数据训练”的方法,至于“数据测试”,则点击Simulate按钮就可以了(或者用C++写,也不难,且网上有现成的BP神经网络的程序),这个相对简单,不说了。下面关于特征向量的维数问题和BP网络的个数问题谈谈我的经验。
    * Z: S1 l6 ?4 M$ m  ]- Q
    6 k2 D( S1 y1 G; |如果是两类问题,则特征向量维数可以比较小,例如识别4和9时,特征维数(曲率特征)为8便可;但当识别多类问题时(下面以十类为例),则特征维数太少是不足以把各类问题分开的(即使使用十个网络,每个网络为一个两类问题)。如果只设计一个网络,要同时识别10个类,则此时样本数量要足够多。另外,应尽量避免使用十个网络进行分类(注意,这与多级分类问题不一样,多级分类问题可以分为几个两类问题有效处理,而对于十个数字来说是同级多类问题),因为此时会把类间相互约束的信息丢失,造成即使对训练样本收敛(而且往往收敛速度很快)但对测试样本分类不好的情况出现,也就是分类器的推广能力差。
    欢迎加我好友gt93,与楼主共同进步。个人网站:http://hackbiji.top
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-9-10 22:51 , Processed in 0.291180 second(s), 61 queries .

    回顶部