BP神经网络 识别手写数字

原理

    BP神经网络分为两部分,前向传播和反向传播;前向传播前面已经讲过了,那么在这儿就讲讲反向传播。其实反向传播和我们Logistic Regression原理差不多,都是通过代价函数来进行求导,只不过在这儿我们神经网络一共有三层,那么就会有两组权重,分别对应第一层传向第二层,第二层传向第三层。所以,在这里,我们可能就需要进行求偏导,然后去更新我们的权重

效果

    效果相比于我们的Logistic Regression 和给定权重的前向传播,要略差一些。准确率波动比较大,在85%~99%左右



具体实现

需要导入的库


导入数据


显示数据


将Y转化为矩阵


降维升维函数


    主要用于minimize()函数来方便求theta

前向传播函数


代价函数和正则函数


梯度函数


梯度检验函数


预测函数


θ生成函数


主函数


小结

    到此,我们已经能够构建一个简单的神经网络,能够解决简单的实际问题。已经迈出一大步了!

你可能感兴趣的:(BP神经网络 识别手写数字)