#python #tensorflow #keras
#python #тензорный поток #keras
Вопрос:
Я загрузил код для распознавания текста с помощью Keras, который применил сеть CRNN и использует потерю CTC в качестве функции потерь. Однако я действительно новичок в потере CTC и просто испытываю проблемы с использованием K.ctc_batch_cost()
, особенно со значением input_length. В документе keras,
Аргументы tf.keras.backend.ctc_batch_cost( y_true, y_pred, input_length, label_length )
- y_true: тензор (samples, max_string_length), содержащий метки истинности.
- y_pred: тензор (выборки, time_steps, num_categories), содержащий предсказание или выходные данные softmax.
- input_length: тензор (образцы, 1), содержащий длину последовательности для каждого элемента пакета в y_pred.
-
label_length: тензор (образцы, 1), содержащий длину последовательности для каждого элемента пакета в y_true.
Однако моя проблема заключается только в том, что означает input_length? это размер выходных данных LSTM?
Ответ №1:
Потеря CTC для одного примера вычисляется в 2D-массиве (T, C). C должно быть равно количеству символов 1 (пустые символы). C содержит распределение вероятностей символов в метках времени. T будет количеством временных меток.
T должно иметь длину 2 * max_string_length . Все возможные кодировки y_true длиной T будут использоваться при вычислении отрицательных потерь в журнале.
Обычно это форма вывода предыдущего слоя.