python手写神经网络
神经网络原理简单说明
要理解神经网络最开始应该理解的一个概念就是——单个神经元。这个神经元是非线性的,它可以是ReLu函数,sigmoid函数等多种的形式,它的作用就是,帮助线不要是直线,因为如果是直线的话,之后需要叠加组合就很难描绘多种的形状,难以完成拟合任务。
而神经网络就是由多个这样的神经元组合而成的,同一层的神经元是对于前一层数据的组合判断(同一层的每一个神经元都有自己不同的组合方式),激活函数对输出的组合计算值进行了包装,再进入下一层进行组合和处理。
精华的部分在于迭代的过程——梯度下降求导。具体的求导为反向传播,简单的理解其实就是复合函数的求导。
不过关于神经网络的具体细节,真的无法给出很具体很具体的解释,要真的解释只能说是梯度下降的作用了。
编写神经网络代码以及代码说明
我设计了一个三层的神经网络,其中在编写的时候,因为每一层的维度和系数矩阵是对应的,因此将每一层的神经的个数用变量来表示,方便之后的调节
参数设计
# 设置输出层神经元个数
k1 = 4
k2 = 8
k3 = 1
# 初始化系数矩阵
W1 = 2*np.random.random((k1,k0)