C++从零实现深度神经网络之零——前言
2016-12-15 18:21
190 查看
一年前接触最初神经网络,半年前就像自己写一个最简单的BP神经网络练练手,结果由于能力有限,不光是编程能力还有理论方面的能力都有限,一直推到半年后的现在才真正的开始。其实很多坑必须要自己亲自踩过之后才能明白。在我看来,我现在这个过程就是在踩坑的过程。在不断犯错和改错中提高。在这里记录下自己的踩坑过程。
这是一个堪称简陋(随着时间推移,应该会变得更好)的练手性质的小项目,而且重复造轮子,目的是为了加深自己对于神经网络的理解,以及提升自己的调参技巧和编程能力。我是一边学习理论和编程技术,一边写程序,而且现在还没有完全完成,只能是一边写程序一边记录博客。之所以不叫BP神经网络而叫深度神经网络,因为我不打算把这个当成一个写完就可以扔掉的小程序,而是可以一直写下去的项目。BP只是最基础的,以后肯定不止于此,就我现在写出来的内容来说,已经不止三层的BP神经网络了,理论上是可以有N层的。
项目中用到的除了标准库就是opencv的core模块。毕竟还是对opencv最熟悉,而且神经网络中最多的就是矩阵运算,而opencv的Mat类确实灰常强大。放着不用简直是浪费。
就目前来说,这个神经网络已经可以开始跑了。大家都说mnist手写数字识别是神经网络领域的Hello World,我也不例外,第一个测试的例子还是用的手写数字识别。在用一千样本(800训练,200测试,用这么少的原因是自己的地电脑太low了)的测试中,正确率85%左右,增加训练样本可以增加正确率。现在只是到这一步。其他的以后再说。
如果有入门比我还晚的人能从中学到一些东西,不胜欣喜。如果有哪位大神偶然路过,能指点一二,简直是再好不过了。
这是一个堪称简陋(随着时间推移,应该会变得更好)的练手性质的小项目,而且重复造轮子,目的是为了加深自己对于神经网络的理解,以及提升自己的调参技巧和编程能力。我是一边学习理论和编程技术,一边写程序,而且现在还没有完全完成,只能是一边写程序一边记录博客。之所以不叫BP神经网络而叫深度神经网络,因为我不打算把这个当成一个写完就可以扔掉的小程序,而是可以一直写下去的项目。BP只是最基础的,以后肯定不止于此,就我现在写出来的内容来说,已经不止三层的BP神经网络了,理论上是可以有N层的。
项目中用到的除了标准库就是opencv的core模块。毕竟还是对opencv最熟悉,而且神经网络中最多的就是矩阵运算,而opencv的Mat类确实灰常强大。放着不用简直是浪费。
就目前来说,这个神经网络已经可以开始跑了。大家都说mnist手写数字识别是神经网络领域的Hello World,我也不例外,第一个测试的例子还是用的手写数字识别。在用一千样本(800训练,200测试,用这么少的原因是自己的地电脑太low了)的测试中,正确率85%左右,增加训练样本可以增加正确率。现在只是到这一步。其他的以后再说。
如果有入门比我还晚的人能从中学到一些东西,不胜欣喜。如果有哪位大神偶然路过,能指点一二,简直是再好不过了。
源码链接
Github: https://github.com/LiuXiaolong19920720/simple_net公众号CVPy,分享不仅限于OpenCV与Python的实战内容,欢迎关注。
相关文章推荐
- 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
- 深度学习算法实践3---神经网络常用操作实现
- C++从零实现深度神经网络之四——神经网络的预测和输入输出的解析
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
- 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
- 深度学习算法实践3---神经网络常用操作实现
- 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
- 深度学习笔记(二):简单神经网络,后向传播算法及实现
- C++从零实现深度神经网络之三——神经网络的训练和测试
- 如何用70行Java代码实现深度神经网络算法
- 深度神经网络实现图像理解的原理
- TensorFlow实现与优化深度神经网络
- java代码实现深度神经网络算法
- 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
- 如何用70行Java代码实现深度神经网络算法
- TensorFlow深度学习笔记 实现与优化深度神经网络
- 从图像到知识:深度神经网络实现图像理解的原理解析
- C++从零实现深度神经网络之壹——Net类的设计和神经网络的初始化
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络