导入所需的库
这里我们还是利用Keras,底层利用Tensorflow做为底层库。
本次利用的模型是大略的卷积神经网络模型,后面也会利用更加繁芜的模型
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以相应一部分覆盖范围内的周围单元,对付大型图像处理有出色表现。它包括卷积层(alternating convolutional layer)和池层(pooling layer)。

一样平常地,CNN的基本构造包括两层,其一为特色提取层,每个神经元的输入与前一层的局部接管域相连,并提取该局部的特色。一旦该局部特色被提取后,它与其它特色间的位置关系也随之确定下来;其二是特色映射层,网络的每个打算层由多个特色映射组成,每个特色映射是一个平面,平面上所有神经元的权值相等。特色映射构造采取影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特色映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧随着一个用来求局部均匀与二次提取的打算层,这种特有的两次特色提取构造减小了特色分辨率。
配置参数
加载数据
演习模型的时候,我们可以选择两种办法来天生我们的演习数据,一种是直接全部载入内存,然后开始演习,一种是定义一个数据天生器,然后利用 fit_generator 分批加载数据来演习。
由于样本是5万张,但是只有200多M,可以一次性载入内存。
末了会天生pickle文件。python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的工具信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的工具。
如果利用我保存好的pickle文件,可以不用实行下列步骤
加载数据,读取pickle文件
创建模型开始演习模型
演习完成,进行验证改进
对付这种按顺序的笔墨验证码,还有一种更好方法可以利用,那便是循环神经网络来识别序列。 我会在后面连续先容如何用循环神经网络构建模型。
代码地址:https://github.com/szpnygo/keras-cnn-captcha
Pickle地址:https://pan.baidu.com/s/1i4JiZOT
欢迎大家关注我们