python - 用于从 Keras 读取验证码的 OCR 模型作者:A_K_Nain
问题描述
我正在为 colab 中的 Kaggle 应用于 word mnist 数据集的 OCR 模型工作。我受到来自 ocr 验证码的模型的启发,该模型具有由 A_K_Nain 在站点托管的 Keras 示例中编写的 LSTM 和 CTC 层:https ://keras.io/examples/vision/captcha_ocr/
它对我有用。但现在我在编码和解码字符到数字时遇到了很多问题。我试图在ocring captcha网站上编译模型,我发现了同样的问题。任何人都可以解释是什么问题以及是否有解决问题的方法。
我认为问题出在以下代码中:
将字符映射到整数
char_to_num = layers.experimental.preprocessing.StringLookup(
vocabulary=list(characters), num_oov_indices=0, mask_token=None
)
将整数映射回原始字符
num_to_char = layers.experimental.preprocessing.StringLookup(
vocabulary=char_to_num.get_vocabulary(), mask_token=None, invert=True
)
这可能会给他的职能带来一些问题。
解决方案
删除 num_oov_indices=0
并 mask_token=None
为我工作。
将字符映射到整数
char_to_num = layers.experimental.preprocessing.StringLookup(
vocabulary=list(characters))
将整数映射回原始字符
num_to_char = layers.experimental.preprocessing.StringLookup(
vocabulary=char_to_num.get_vocabulary(),invert=True
)
这是来自张量流文档的教程。
正向和反向查找对
此示例演示如何使用标准查找层的词汇表来创建反向查找层。
data = tf.constant([["a", "c", "d"], ["d", "z", "b"]])
layer = StringLookup(vocabulary=vocab)
i_layer = StringLookup(vocabulary=vocab, invert=True)
int_data = layer(data)
i_layer(int_data)
推荐阅读
- c# - 如何从 C# 中传递的对象中检索单个值?
- javascript - 如何获取两个日期时间之间的日期数组
- docker - 副本会减少单节点 Kubernetes 集群上的流量吗?
- javascript - 如何使用云功能将子级添加到 Firebase 实时数据库中的列表?
- json - DynamoDB JSON 响应解析垂直打印
- r - 如何删除 R 中的 na 并使低于值上升
- c# - 如何设置条件 C# if 语句和 LINQ where 语句?
- ruby-on-rails - 如何降级gemfile中的gem?
- javascript - Mongoose:$lookup 后的 $project 不显示字段
- reason - ReasonReact 减速器中的动作类型错误