基于神经网络的验证码实验研究(二)
8.训练和分类
构造神经网络分类器,接收图像,预测图像。
构造神经网络,需要更多的Hide层对实验结果会有很大的效果,会对计算效率产生作用。此处使用MLP,即多层感知机。最主要的特点就是含有多个神经元层,因此从神经网络衍生出深度神经网络,即DNN。
它可以被看作是一个有向图,由多个的节点层所组成,每一层都全连接到下一层。
除了输入节点,每个节点都是一个带有非线性**函数的神经元(或称处理单元)。
- 创建一个最基础的、具有三层结构的多层感知机,它由输入层、输出层和一层隐含层组成。输入层和输出层的神经元数量是固定的。
- 现在,数据集有400个特征,那么第一层就需要有400个神经元,而26个可能的类别表明我们需要26个用于输出的神经元。
9.训练后进行查看
效果图片所示:
10.对f1-score
的测试分析
- 我们使用F1指标来判断结果好坏。
- f1数值达到0.9左右, 说明模型训练还不错。而且分数越高,说明模型预测越好。
11.预测函数
定义一个预测验证码的函数predict_captcha
:
- 使用前面定义的图像切割函数,
segment_iamge
抽取小图像; - 整理数据集=
dataset
,X_test
. - 进行图像预测。
-
assert len
检查输入输出集是否相等。 -
predicted_word
将预测的字母拼接起来。
12.尝试预测
效果图片所示:
对于字母处理,我们在前面只定义了大写字母,因此我们的神经网络model也只能识别大写字母。
13.NLTK
- 借助NLTK模块创建单词数据集,只使用长度为4的单词,从NLTK中导入
words
。 - 第一次模拟训练匹配率:
- 第n次修正模型后训练匹配率:
Number correct is 26
Number incorrect is 5487