我正在为应用于colab中Kaggle的单词mnist数据集的OCR模型工作。A_K_Nain在网站上托管的Keras示例中编写的具有LSTM和CTC层的ocr captcha模型启发了我: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)