Я сделал модель в тензорном потоке со следующей структурой для OCR. Я обучил его на значительно большом наборе данных (250K изображений), а также получил точность около 94%. Но модель предсказывает "is" как "1s" или "1S" в большинстве случаев. Я проверил набор данных, и он содержит довольно много экземпляров «is», поэтому я не думаю, что набор данных - это проблема. Также модель правильно предсказывает, когда она является частью другого слова, такого как «это» или «христианин». Что может быть причиной такого поведения, как я могу улучшить модель, чтобы обнаружить «есть».
То, что я пробовал
Уменьшить количество слоев maxpool.
Используйте 2x1 ядра для слоев maxpool
Input: (?, 64, 1024, 1)
cnn-1: [None, 64, 1024, 64]
relu-1: [None, 64, 1024, 64]
bn-1: [None, 64, 1024, 64]
maxpool-1: [None, 32, 512, 64]
cnn-2: [None, 32, 512, 128]
relu-2: [None, 32, 512, 128]
bn-2: [None, 32, 512, 128]
maxpool-2: [None, 16, 256, 128]
cnn-3-1: [None, 16, 256, 256]
relu-3-1: [None, 16, 256, 256]
cnn-3-1: [None, 16, 256, 256]
relu-3: [None, 16, 256, 256]
bn-3: [None, 16, 256, 256]
maxpool-3: [None, 8, 128, 256]
cnn-4-1: [None, 8, 128, 512]
relu-4-1: [None, 8, 128, 512]
bn-4-1: [None, 8, 128, 512]
cnn-4-2: [None, 8, 128, 512]
relu-4-2: [None, 8, 128, 512]
bn-4-2: [None, 8, 128, 512]
maxpool-4: [None, 4, 64, 512]
cnn-5: [None, 4, 64, 512]
relu-5: [None, 4, 64, 512]
lstm-input: [None, 64, 2048]
lstm-output: [None, 64, 256]
lstm-output-reshaped: [None, 256]
fully-connected: [None, 94]
reshaped_logits: [None, None, 94]
transposed_logits: [None, None, 94]