问题描述
我在 colab 中为应用于来自 kaggle 的单词 mnist 数据集的 OCR 模型工作。我受到来自 ocr captcha 的模型的启发,该模型由 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
)
将整数映射回原始字符strong>
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))
将整数映射回原始字符h3>
num_to_char = layers.experimental.preprocessing.StringLookup(
vocabulary=char_to_num.get_vocabulary(),invert=True
)
num_to_char = layers.experimental.preprocessing.StringLookup(
vocabulary=char_to_num.get_vocabulary(),invert=True
)
这是张量流文档中的 tutorial。
正向和反向查找对
此示例演示了如何使用标准查找层的词汇来创建逆查找层。
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)