用于字母识别的神经网络

dyl*_*lan 7 java backpropagation neural-network

我正在尝试添加单层神经网络的代码,该网络将位图作为输入,并且具有26个输出,用于表示字母表中每个字母的可能性.

我的第一个问题是关于正在添加的单个隐藏层.我是否认为隐藏层只有自己的一组输出值和权重?它不需要拥有它自己的偏见'?

我还可以确认我正在考虑前馈方面吗?这是一些伪代码:

// input => hidden
for j in hiddenOutput.length:
    sum=inputs*hiddenWeights
    hiddenOutput[j] = activationFunction(sum)
// hidden => output
for j in output.length:
    sum=hiddenOutputs*weights
    output[j] = activationFunction(sum)
Run Code Online (Sandbox Code Playgroud)

假设这是正确的,培训会是这样的吗?

def train(input[], desired[]):
    iterate through output and determine errors[]
    update weights & bias accordingly
    iterate through hiddenOutput and determine hiddenErrors[]
    update hiddenWeights & (same bias?) accordingly
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助,我已经阅读了很多示例和教程,我仍然无法确定如何正确地完成所有操作.

raj*_*ah9 1

迪伦,这可能是在你的作业到期很久之后,但我确实对你发布的内容有一些想法。

  • 使隐藏层比输入位图的大小大得多。
  • 输入 -> 隐藏与隐藏 -> 输出之间的权重和偏差应该不同。
  • 花大量时间在错误函数(鉴别器)上。
  • 了解神经网络有快速锁定一组权重的倾向(通常是错误的)。您需要重新开始并以不同的顺序进行训练。

我从神经网络中学到的一点是,你永远不知道它们为什么工作(或不工作)。仅此一点就是将其排除在医学和金融领域之外的理由。