【问题标题】:Training neural network tips训练神经网络技巧
【发布时间】:2011-11-09 05:49:20
【问题描述】:

对于对象识别,建议我在 MATLAB 中使用神经网络。我有 30 个对象和每个对象的 20 个图像,所以我有 600 个输入数据和 20 个不同的类。输入矩阵为 100x600,目标为 1x600。输入矩阵列是 100 个 bin 中关键点色调的直方图,如下所示:(m,n)=hist(hue_val,100) 我采用了m
如果我选择 MLP 网络,这些层需要多少层和神经元,传递函数是适合每一层吗?

最后一个问题,我需要负样本吗?

【问题讨论】:

    标签: matlab neural-network


    【解决方案1】:

    当我问自己这个问题时,我发现这个page 也许这会有所帮助。

    编辑

    对不起,我想链接到这个page,在那里你可以去不同的问题,比如我应该使用多少隐藏层?或者我应该使用多少个隐藏单元?

    【讨论】:

      【解决方案2】:
      • 层数 - 通常单个隐藏层就足够了,因为(只要您使用非线性激活函数)单个层可以近似任意层数。
      • 传输函数 - 我不习惯这个术语,但我假设您的意思是激活函数(在将网络输入传递到下一层之前对网络输入所做的操作)。我回答了这个问题here 的一个小变体,但要点是,在大多数情况下,标准选择(如双曲正切或逻辑)都有效。
      • 隐藏层中的神经元数量 - crodriguezo 的链接很好地处理了这一点。我真正要补充的是,根据您的输入大小,我可能会将这个数量基于训练时间。
      • 负样本 - 如果您只需要对输入也属于 30 个对象中的哪一个进行分类,则不需要负样本。但是,如果一个测试输入可能是 30 个对象中的 none,那么肯定会使用大量的反例,这样网络就不会认为 everything 是一个对象。

      一些一般提示:

      请记住考虑将留一法和类似的形式cross validation 作为对抗过度拟合的方法。限制隐藏层的单元数也可以做到这一点,但代价是表现的丰富性。

      您未提及的其他参数对于任何成功的 ANN 应用程序也非常重要。这些包括学习率、误差函数、退火时间表、动量和权重衰减。在这一点上,设置所有这些更像是一门艺术而不是一门科学(反对使用人工神经网络与支持向量机的最佳论据之一),但这个link 对我来说是这个领域的天赐之物。

      【讨论】:

      • 对于负样本,我应该对所有样本使用相同的目标吗?例如我想要的目标是(整数)1-30,我应该为否定选择什么目标?
      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 2010-11-20
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多