1、前期经验
关于验证码识别,试过使用传统的machine learning方式识别,在相同样本下效果还算可以,但当迁移到别的数据集时,效果不理想。
对于使用深度学习识别验证码,尝试过使用LeNet-5、AlexNet两种卷积网络,可能是网络结构简单的原因,结果不收敛。故尝试用了RNN中的LSTM单元网络来识别,效果较理想。
2、原始验证码文件
验证码相对来说算简单,字符没有倾斜和重叠,但有不少干扰线。
3、网络结构
此处使用了双层的LSTM作为隐含层,保留最后四个cell的输出结果,加一层full connection,并concat得到最后的输出。
4、训练过程
使用Adam算法替代梯度下降,迭代到3000次,accuracy达0.65,loss小于0.03。继续进行迭代、优化能到达更高的准确率。
5、总结
由此等简单项目能体验出深度学习的厉害之处,传统机器学习由于需要人工特征工程,较为局限。深度神经网络通过构建大量参数的行为,并结合优化算法,实现自学习所有局部、抽象、高层特征。此乃区别之处。
代码地址:https://github.com/wzzzd/LSTM_captcha
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:tensorflow 基于深度学习 循环神经网络 LSTM 识别验证码 - Python技术站