что означает значение input_length в K.ctc_batch_cost()

#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 )

  1. y_true: тензор (samples, max_string_length), содержащий метки истинности.
  2. y_pred: тензор (выборки, time_steps, num_categories), содержащий предсказание или выходные данные softmax.
  3. input_length: тензор (образцы, 1), содержащий длину последовательности для каждого элемента пакета в y_pred.
  4. 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 будут использоваться при вычислении отрицательных потерь в журнале.

Обычно это форма вывода предыдущего слоя.