使用Python实现神经网络

神经网络/人工神经网络的洋文是Neural Network,这个计算模型在上世纪40年代就出现了,但是直到2011、2012年由于大数据和深度学习的兴起,神经网络才得到广泛应用。

参看wiki神经网络:https://en.wikipedia.org/wiki/Artificial_neural_network

为了更好的理解Neural Network,本帖使用Python实现一个最简单的Feed-forward神经网络,然后使用MNIST数据集进行测试。

MNIST数据集简介

当我们学习新的编程语言时,通常第一个程序就是打印输出著名的“Hello World!”。在深度学习中,MNIST数据集就相当于Hello World。

MNIST是一个简单的计算机视觉数据集,它包含手写数字的图像集:

使用Python实现神经网络

MNIST数据集下载地址: Yann LeCun,网站貌似被墙,你可以去这里下载。

数据集:

  • train-images-idx3-ubyte  训练数据图像  (60,000)
  • train-labels-idx1-ubyte    训练数据label
  • t10k-images-idx3-ubyte   测试数据图像  (10,000)
  • t10k-labels-idx1-ubyte     测试数据label

每张图像是28 * 28像素:

使用Python实现神经网络

我们的任务是使用上面数据训练一个可以准确识别手写数字的神经网络模型。

使用Python实现神经网络

使用Python实现神经网络

上图网络的构造方法:

定义Sigmoid函数:

画出这个函数图像:

使用Python实现神经网络

上面使用Sigmoid函数做为神经网络中的激活函数,其作用就是引入非线性。它的优点在于输出范围有限(0, 1),所以数据在传递的过程中不容易发散。可选择的激活函数有很多。

定义feedforward函数:

定义随机梯度下降函数,赋予神经网络学习的能力:

预测:

加载MNIST数据集:

完整代码:

训练大概需要几分钟,执行结果:

使用Python实现神经网络
你可以对神经元数量、训练次数等参数进行调整,准确率应该能达到96%+;和99.8%还有很大差距

使用tensorflow训练MNIST数据

使用Python实现神经网络

使用sklearn的svm分类MNIST数据

执行结果:

相关文章

《使用Python实现神经网络》有6个想法

  1. 博主,我是初学者,在照敲您的代码学习,可是我遇到了一些问题,请问您github上有这些例子的源码吗,可不可以告诉我你的github账号?

发表评论

电子邮件地址不会被公开。 必填项已用*标注