我目前正在学习模式识别。我有7年的编程背景,所以,我认为像程序员一样。
关于人工神经网络的文档告诉我什么订单一切都被处理,或者至少没有说清楚。这很烦人,因为我不知道如何编码公式。
我找到了一个很好的GIF,我希望是正确的。有人可以给我一个人工神经网络反向传播的一步一步过程,例如2个输入,1个隐藏层,3个节点,2个输出使用sigmoid。
这是gif。
答案 0 :(得分:1)
正如埃米尔所说,你从输入到输出逐层进行,然后再逐层向后传播错误。
根据你所说的,我希望你正在努力使'#34;面向对象"每个神经元都是对象的实现。但这并不是最快最简单的方法。最常见的实现是由Matrix操作完成的 每个层由单个Matrix描述(每行包含一个神经元加上阈值的权重)
这是matlab代码应该做的诀窍:
output_hidden = logsig( hidden_layer * [inputs ; 1] );
inputs
是图层输入的列向量
hidden_layer
是权重矩阵加一行,用于描述隐藏层中的阈值
output_hidden
再次是图层中所有神经元输出的列向量,可用作下一层的输入
logsig
是逐个对矢量的所有成员进行sigmoid变换的函数
[inputs ; 1]
在列向量inputs
的末尾创建一个新的向量1,因为你需要"虚拟输入"阈值乘以。
如果您考虑一下,您会看到矩阵乘法将对所有输入乘以权重与输出进行精确求和,您还会看到它与您执行所有操作的顺序无关。为了用任何其他语言实现它,只需找到自己很好的线性代数库。实现反向传播有点棘手,你需要进行一些矩阵转置(例如,通过对角线翻转矩阵)
答案 1 :(得分:0)
正如您在gif中看到的那样,每层处理。由于图层中没有连接,因此图层中的处理顺序无关紧要。使用ANN(分类)从输入层到隐藏层到输出层。训练(使用反向传播)从输出层返回到输入层。