Передайте [["123456"],["654312"]]
вместо ["123456","654312"]
в качестве «списка меток».
EDIT: sparse_categorical_crossentropy
не имеет смысла как функция потерь. Вы пытаетесь сравнить вывод вашей сети (число с плавающей запятой) с вашей меткой (строкой), но этого не произойдет. Если вам действительно нужно что-то обучить самому, вам нужно представить строки как векторы.
Итак, у вас есть несколько вариантов: 1) попробовать что-нибудь из коробки (рекомендуется): https://github.com/faustomorales/keras-ocr. Вам, наверное, даже не придется этому переучивать. 2) тренируйте свои собственные и представляйте струны как 60-мерный вектор. 6 цифр, и каждый di git может иметь 10 разных символов [0-9], поэтому 60. Итак, ваш последний плотный слой будет иметь 60 выходных нейронов. Это означает, что вам нужно закодировать свои метки как 60 выходных нейронов, например, строка 123444 будет
[0,1,0,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0]
. Вам нужно будет написать код, который преобразует ваши строковые метки в такие one hot
кодировки. -А они называются. Это, вероятно, легче всего сделать в create_training_data
, а не в tensorflow
, но тогда модель также будет выводить 60-вектор, а не строку.