2018国庆期间学习机器学习的笔记
October.9/0.1
困,非常的困,大部分时间都是八点到九点起床,偶尔一两次七点多起床就是这么难受,搞不懂以前是怎么早起的,同样搞不懂的还有Python,看了几节keras
的课程,keras
非常简单,简单是说明手册简单,跟着keras
手册走,你也能做出简单的例子,然后拿例子稍作调整,就可以运用于某些场景,而且还有不错的结果。
October.9/0.2
事实上,这一周我花了一半的时间看机器教学的视频,没怎么遇到过怎样子的问题,因为网上铺天盖地的入门例子,而我需要花一部分时间学习Python,这种if后面没有括号,靠缩减确定语句块的语言并没有显得那么难受,Python之后就是numpy,忍住喝了大量白开水的感觉又是啃了一段时间,之后敲代码,几个keras
识别手写数字的例子,非常神奇的是可以加载图形库,显示出各种表格图标,当然现在我还没发从这些图表中获取任何信息。
October.9/0.3
比起学语法,我花了很长一段时间,去理解numpy.array
,各种变量的形状,🤔那种感觉就是和读高数数一样,非常抽象,如果用其他语言实现的话,肯定各种for嵌套,在Python里面只是一行代码,但是现在用的还不是很顺手。
October.10/0.4
我做的一个demo是识别验证码,之前尝试过切割,遇到字符粘贴在一起,并不能很好的切割,那时候我问过我一个朋友,我记得他说过,用水滴,或者直接喂给卷积神经网络,那时候并不懂,当然代码我肯定不知道怎么写,直接各种博客各种爬代码,显然Python这方面对新手太友好了。900+个训练样本,100+个测试样本,正确率在0.7多,4个字母的话,那么识别一个验证码完全正确的概率在三分之一到四分之一,人品差点的话,系统识别十几个都不会过,要么在手动打码几千个,那不得累死了。什么都好就是采集太累了,后面查询了一下,验证码上面的字母只做旋转,不做平移,于是按照文章给的坐标,直接切割,训练样本一下子乘四,单个字母识别成功率能达到98%,这过程包括添加了一个手动的去噪算法,模型已经可以使用,偶尔错误在识别一次就好。
October.18/0.1
全连接神经网络 输出个数就是当前曾神经元的数量,因此后一层带来误差的数量也是当前层神经元的数量,每个神经元对于前一层每一个神经元产生一个误差,再把所有神经元的误差重叠在一起 就是当前层对于前的影响或者称之为误差.
October.19/0.1
这周我用golang
编写了一个自动求导的类库,里面运用了大量的递归,数学理论到代码的实现是非常难的过程,期间你并不知道代码是否正确,即使正常运行,也不能完全确定在某个地方存在bug,实现然后优化化简,尽可能的优化到最简式,因为任何意义的计算,在训练的时候都会被重复非常多次,然后我又发现,最简单的全连接神经网络里面,简单的求导手写的方式是最有效的。
做了非常多的无用功,自己手写了一部分的代码,回头看那些机器学习的类库,没有开始的时候那么迷惑,另外,学习一门新的编程语言,语法是最简单的部分,之后就是标准库,最后就是感觉,写就了之后编程语言的命名一个方法调用都有一定的感觉,所以为了某个功能,短时间速成一个编程语言然后编写东西是非常累人的事情,也可能是精力没有以前那么好了。
October.19/0.2
我用我编写(这周编写的)的一个全连接神经网络学习的demo训练同样样本的数据,然后测试,正确率大概在0.6-0.7
之间(没具体统计),这个单个数字字母,四个数字加字母组合的验证码正确率就没法看了,看来差距还是很大,应该是我在哪里做错了什么。