使用TensorFlow 来实现一个简单的验证码识别过程
这里 text2vec() 要领就是将真实文本转化为 One-Hot 编码,vec2text() 要领就是将 One-Hot 编码转回真实文本。
例如这里挪用一下这两个要领,我们将 1234 文本转换为 One-Hot 编码,然后在将其转回来:
这样我们就可以实现文本到 One-Hot 编码的互转了。
接下来我们就可以结构一批数据了,x 数据就是验证码的 Numpy 数组,y 数据就是验证码的文本的 One-Hot 编码,天生内容如下:
这里我们界说了一个 getrandomtext() 要领,可以随机天生验证码文本,然后接下来再使用这个随机天生的文原来发生对应的 x、y 数据,然后我们再将数据写入到 pickle 文件里,这样就完成了预处置惩罚的操作。
3.构建模子
有了数据之后,我们就最先构建模子吧,这里我们照旧使用 traintestsplit() 要领将数据分为三部门,训练集、开发集、验证集:
接下来我们使用者三个数据集构建三个 Dataset 工具:
然后初始化一个迭代器,并绑定到这个数据集上:
接下来就是要害的部门了,在这里我们使用三层卷积和两层全毗连网络举行结构,在这里为了简化写法,直接使用 TensorFlow 的 layers 模块:
这里卷积核巨细为 3,padding 使用 SAME 模式,激活函数使用 relu。
经由全毗连网络变换之后,y 的 shape 就酿成了 [batchsize, nclasses],我们的 label 是 CAPTCHALENGTH 个 One-Hot 向量拼合而成的,在这里我们想使用交织熵来盘算,可是交织熵盘算的时间,label 参数向量最后一维各个元素之和必须为 1,否则盘算梯度的时间会泛起问题。详情参见 TensorFlow 的官方文档:
https://www.hvihi.com/d82/dca/63f78ff26564ebcd54b6872858/1080_75_11.4.jpg" style="height:75px; width:1080px" />
这样我们就可以确保最后一维是 VOCAB_LENGTH 长度,而它就是一个 One-Hot 向量,以是各元素之和肯定为 1。
然后 Loss 和 Accuracy 就好盘算了:
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。