由以上分析可知,神经网络只需要74行代码就可以完成编程,可见机器学习真正困难的地方并不在编程,而在你对数学过程本身,和对它与现实问题的对应关系有深入的理解。理解深入后,你才能写出这样的程序,并对其进行精微的调优。
我们初步的结果已经是94.76%的正确率了。但如果要将准确率提得更高怎么办?
这其实是一个开放的问题,有许多方法都可以尝试。我们这里仅仅是抛砖引玉。
首先,隐藏层只有30个节点。由我们之前对隐藏层的启发式理解可以猜测,神经网络的识别能力其实与隐藏层对一些细节的识别能力正相关。如果隐藏层的节点更多的话,其识别能力应该会更强的。那么我们设定100个隐藏层节点试试?
net = network.Network([784, 100, 10]) net.SGD(training_data, 30, 10, 3.0, test_data=test_data)