/BPNN-python

Back Propagation 用python写一个最简单的三层神经网络算法。

Primary LanguagePython

BPNN简单神经网络计算

Back Propagation 用python写一个最简单的三层神经网络算法。
最简单的三层神经网络,大多数都是使用np.array写的,因为用矩阵可以很轻松的进行数据计算,表达等操作。

此代码使用全字典,意在更为清晰明了的看清楚代码的key与value的关系。


题目:

一个3,2,1的典型三角神经网络 将[1,0,1]输入第一层的1,2,3号神经元,隐藏层为5,6号神经元,输出层为6号神经元。
设想的输出1学习系数l0.9各个神经元间的初始权重为:

权重key w14 w15 w24 w25 w34 w35 w46 w56
权重value 0.2 -0.3 0.4 0.1 -0.5 0.2 -0.3 -0.2

初始的神经元偏置:

θ₁ θ₂ θ₃
-0.4 0.2 0.1

随即可以使用总输入输出公式算出各个神经元的输入Sj与输出Oj:

Sj = ∑wij Oi + θj

Oj = 1/(1+e^(-s)j)

再计算每个神经元的误差Ej:

Ej = Oj (1 - Oj) ∑k Wjk Ek

最后更新权重:

Wij = wij + △wij = wij + (l) Oi Ei

就得到了新的权重然后无限循环来寻找一套权重来适应预设的输入与期望输出。