赞
踩
疫情仍然严重,继写完上一篇博客后我也从零开始学习神经网络,真是绕了很多弯路啊。。这网上资料多归多,有用的属实难找,再加上之前忙美赛,转眼就隔了两周才有进展,这里非常想把自己从一个什么都不懂的小白一步步成长到可以自己定义、训练神经网络的大白之路分享给所有想要入门的伙伴们。如果大家看完这一篇也能够自己进行实践、操作,那么我将感到十分满足~
还有点做这个的心路历程,之前写完爬虫我是想实现自动登陆微人大(我是人大的学生),奈何它有个验证码,我用了手动输入的方法,但觉得太low;用了调用打码平台api的方法,但要交钱;用了tesserocr识别,但准确率太低,因此决定自己整一手机器学习,专门识别微人大的验证码~这就踏上了不归路hhh
再说点题外话,我想在前言里把自己这个假期自学python以及上学期有过一段自己用cocos creator编写游戏的感受总结出3点分享给大家:
现在知识太多,我们学习时无法把所有点全都学会,长时间的、漫无目的地研读用户手册无疑是效率最低的做法;我们最好先明确学会了这个软件(语言)后要完成的项目,这样无论是搜索资料、进行学习都会变得容易许多,也更容易获得成就感。
刚开始学习神经网络时,我甚至连卷积神经网络和BP神经网络都没有分清,甚至弄混了两者的权重矩阵,就直接开始钻研后向传播算法的证明过程,结果什么也没搞懂不说(因为我根本不知道它用在哪个过程),还浪费了很多时间;最后才发现原来pytorch中人家都有封装好的方法进行后向传播。。。吐了
因此,搞清学习某个东西时自己对结果的定位,到底是要全面了解、滴水不漏还是用它完成某件事,如果是后者,请不要浪费太多时间去探寻“为什么”,而是去弄明白"怎么做“。
我们初学新的事物时,千万别想一步登天,看到不懂的地方,搞清楚其使用方法后,不要想是不是还有更简单的方法,而是先自己试一试,如果之后了解到更优方法再改,否则就是思而不学则殆
这里先贴出一些优质博客:
就我现在的理解,无论是机器学习还是深度学习,其核心只有一个:函数拟合。对于二维平面上离散的点
( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) (x_1,y_1),(x_2,y_2),...,(x_n,y_n) (x1,y1),(x2,y2),...,(xn,yn)
我们可以用数学方法进行二次回归、多项式回归等方法将其拟合在一个直线/曲线上,但是,对于n维空间中的点 ( x 1 ( 1 ) , x 2 ( 1 ) , . . . x n ( 1 ) , y ( 1 ) ) , ( x 1 ( 2 ) , x 2 ( 2 ) , . . . x n ( 2 ) , y ( 2 ) ) , . . . , ( x 1 ( n ) , x 2 ( n ) , . . . x n ( n ) , y ( n ) ) (x_1^{(1)},x_2^{(1)},...x_n^{(1)},y^{(1)}),(x_1^{(2)},x_2^{(2)},...x_n^{(2)},y^{(2)}),...,(x_1^{(n)},x_2^{(n)},...x_n^{(n)},y^{(n)}) (x1(1),x2(1),...xn(1),y(1)),(x1(2),x2(2),...xn(2),y(2)),...,(x1(n),x2(n),...xn(n),y(n)),我们是难用数学直观的进行计算的。但是计算机强大的运算能力可以通过复杂的算法(一般就是梯度下降)来拟合出一个合适的函数,达到用预测值逼近真实值的目的。
对于我们接下来要进行的验证码识别,其拟合的目的就是让计算机识别到验证码图片的特征,将其分为26*4类,也就是让函数在n维空间的不同位置有着26*4种不同的输出。这个在训练网络的部分会细讲
个人见解:BP神经网络其实就是卷积神经网络的全连接层,且现在常用的是卷积神经网络,由于本篇博客涉及的验证码识别项目运用的就是卷积神经网络,在此我也只对其进行详细的介绍。
最开始我们必须明确,我们传入卷积神经网络的是图片转化而成的tensor!!但为了方便理解,我们可以认为传入网络的就是一张张图片。
接下来,卷积神经网络中有几个重要的参数,我想通过介绍他们的方式,让大家对卷积神经网络有更直观的了解:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。