零基础,手把手教你第一个神经网络,只需三步!
这篇文章只是为你扫清障碍
代码还是要自己打一遍,才会发现各种报错。
参数要自己调试一遍。才能体会神经网络的神奇。
注意:需要学习资料视频书籍的;
添加小编学习交流群943752371即可
准备工作:
1、第一个人工神经网络实现目标:
识别数字,让计算机学会识别如下数字
,
2、数据集:
https://pjreddie.com/projects/mnist-in-csv/
需要下载train set和test set两个数据集。
数据分析:每一行代表一个手写数字。每行第一列是这个数字的值,从第二列开始代表像素值。
3、编程语言python,编程工具:jupyter notebook
安装免费的anaconda,安装后打开jupyter notebook会跳出网页,在网页对话框里输入语句。
神经网络原理:
参见之前的文章。吴恩达教你入门神经网络 - 今宵的文章 - 知乎
https://zhuanlan.zhihu.com/p/49854976
正式动手:
把大象装冰箱需要几步?只需三步!
一、搭建模型
1、python编程通用第一步:引入各种需要的库
这里只需要3个库。Numpy是数值计算必备库,scipy是需要调用里面一个函数,matplotlib是画图库
import numpy
import scipy.special
import matplotlib.pyplot
%matplotlib inline
2、模型框架:三个函数写出神经网络框架
def init(self,inputnodes,hiddennodes,outputnodes,learningrate):设置神经网络参数,包含输入层节点数、隐藏节点数、输出层节点数和学习率
注意init左右2边是2条下划线,python里叫魔法方法,某些情况下会自动调用这个函数。
def train(self,inputs_list,targets_list):——训练函数,输入和输出2个参数
def query(self,inputs_list):——查询函数,输入1个参数
3、 补全函数:给函数写具体功能。参见具体语句。
二、 训练模型
1、 设置神经网络参数
写出语句只是开始,调参数才是神经网络的重点,通过调整参数,可以让模型结果更好
可以实验不同的节点数、学习率,看看正确率会怎么改变,感受参数的改变对模型输出结果的影响。
2、训练数据导入
第一次导入时可以选取小一点的数据集,比如1000个数据,原始数据导入跑一次要花10多分钟,不方便调试。
可以用len() 语句查看导入语句是否成功,导入了多少行语句。
我导入语句比较顺利,导入失败可能是文件名写错(比如没写后缀),或者文件夹放的不对。
3、 用数据训练神经网络
耗时较长,还看不到结果,要耐心等待。
三、测试模型
1、测试数据导入:
这里训练数据和测试数据要分开,否则训练出神经网络起不到作用。就像平时做作业都对,但考试时不一定考出高分。考的内容要和平时作业不一样才能验证水平。
2、 附加:查看神经网络训练结果和实际数据的区别
这一步是最有成就感的一步。
看看图片是什么数据,神经网络判断是什么数字。这里神经网络输出10个数字,从0开始算,拿个数字最大表示判断是拿个数。比如这张图,第6个数据最大,表示神经网络判断这个数字是5(因为从0开始算)。
3、 如何查看神经网络的正确率?
用循环算出每个值和正确值比较
我这个模型的正确率是88.8%,1000个数据训练出的正确率还可以。可以用全量30000个数据再训练一次,最高的正确率是95%
4、 后续玩法
可以查看哪个数神经网络判断错了:比如这张图是5,神经网络判断为1了,可以看到输出结果比较接近,1的数值比5大了一点点。神经网络判断这个图像1、像2又像5。
可以尝试改变各种参数,追求最大的正确率,并画出参数和正确率的关系。
可以尝试自己手写一个数字,把数据像素化,让神经网络判断
附:完整代码参见https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork
参考文献:《python神经网络编程》
如果觉得有用,请点个赞,让我知道写的对你有帮助。
网友评论