Я пытаюсь обучить модель считывать штрих-коды фиксированной длины.На данный момент моя модель выглядит следующим образом (для 10-значной длины):
x = ly.Dense(units=4096)(x)
x = ly.Activation("relu")(x)
x = ly.Activation("relu")(x)
d0 = ly.Dense(units= 10, activation="softmax")(x)
d1 = ly.Dense(units= 10, activation="softmax")(x)
d2 = ly.Dense(units= 10, activation="softmax")(x)
d3 = ly.Dense(units= 10, activation="softmax")(x)
d4 = ly.Dense(units= 10, activation="softmax")(x)
d5 = ly.Dense(units= 10, activation="softmax")(x)
d6 = ly.Dense(units= 10, activation="softmax")(x)
d7 = ly.Dense(units= 10, activation="softmax")(x)
d8 = ly.Dense(units= 10, activation="softmax")(x)
d9 = ly.Dense(units= 10, activation="softmax")(x)
model = tf.keras.Model(inputs=[inputs], outputs=[d0, d1, d2, d3, d4, d5, d6, d7, d8, d9])
И моя модель скомпилирована с потерей 'categoryorical_crossentropy'.Это работает, однако у меня много тренировок, проверок, потерь в тестировании и точности для мониторинга (всего около 30).
Я хотел бы иметь возможность масштабировать эту модель до большего количества цифр (30, 100?).Но было бы нецелесообразно делать это таким образом.
Я попытался реализовать это, собрав все выходные данные в один вектор (размер 100), а также метки и скомпилировав модель с параметром binary_crossentropy.Однако это никогда не сходилось.Интересно как это так ведь должно быть тоже нет?Я проверил, что этикетки были правильно сложены, и да, они были.
Итак, я попытался преобразовать вывод Dense (4096) в матрицу размера (10, 10) со слоем Reshape, снабдив его метками, преобразованными в столбцы (или строки, которые я не помню).), и он не будет работать ни с бинарной, ни с категориальной кроссентропией, поэтому я предполагаю, что я должен реализовать пользовательские потери.
Как лучше всего решить эту проблему?
Большое спасибо.