Поделиться через


Модуль чтения последовательности Lu BrainScript

Примечание. Если вы новичок, рассмотрите возможность использования CNTK средства чтения текстового формата. В будущем LUSequenceReader будет нерекомендуем и в конечном итоге не поддерживается.

LUSequenceReader похож на LMSequenceReader. Однако он используется для задач распознавания речи, которые имеют разные входные и выходные строки. Ниже приведен пример настройки LUSequenceReader.

reader = [
    readerType = "LUSequenceReader"
    randomize = "none"
    wordContext = 0:1:2
    nbrUttsInEachRecurrentIter = 10
    unk = "<unk>"
    wordMap = "$DataDir$\inputmap.txt"
    file = "$DataDir$\atis.train.IOB"
    labelIn = [
        useWordMap = true
        beginSequence = "BOS"
        endSequence = "EOS"
        token = "$DataDir$\input.txt"
    ]
    labels = [
        beginSequence = "O"
        endSequence = "O"
        token = "$DataDir$\output.txt"
    ]
]

LuSequenceReader имеет следующие параметры:

  • wordContext: указывает контекстное окно. Например, wordContext=0:1:2 указывает контекстное окно 3. В этом окне контекста он считывает входные данные в текущее время, в следующий раз и время после следующего. Еще один пример: wordContext=0:-1. В таком случае LUSequencReader считывает контекстное окно 2, состоящее из текущих входных данных и непосредственных последних входных данных.

  • randomize: это либо None или Auto. Это указывает режим, в котором выполняется рандомизация предложения для всего корпуса.

  • nbrUttsInEachRecurrentIter: указывает ограничение количества предложений в мини-пакете. Модуль чтения упорядочивает входные предложения одинаковой длины до указанного предела в каждый мини-пакет. Для повторяющихся сетей тренер сбрасывает действия скрытого слоя только в начале предложений. Действия скрытых слоев переносятся на следующий мини-пакет, если конец предложения не достигнут. Использование нескольких предложений в мини-пакете может ускорить процессы обучения.

  • unk: указывает символ, представляющий невидимые входные символы. Обычно этот символ имеет значение "".

  • wordMap: указывает файл, который сопоставляет входные данные с другими входными данными. Это полезно, если пользователь хочет сопоставить некоторые входные данные с неизвестными символами. Ниже приведен пример файла сопоставления слов.

    buy buy

    trans <unk>

  • file: файл содержит входные данные и его метки. Последний столбец — метка, а другие столбцы содержат входные данные. Ниже приведен пример файла обучения.

    BOS O

    flight O

    from O

    charlotte B-fromloc.city_name

    to O

    las B-toloc.city_name

    vegas I-toloc.city_name

    EOS O

В приведенном выше примере также можно заметить два вложенных блока с именами labelIn и labels.

  • labelIn: раздел для входной метки. Он содержит следующие настройки.

    • useWordMaptrue или falseуказывает, используется ли сопоставление слов для сопоставления входных слов с другими входными словами.
    • beginSequence — символ начала предложения.
    • endSequence — символ конца предложения.
    • token — файл токена содержит список входных слов. Их заказы не важны.
  • labels: раздел для выходной метки.

    • token — файл токена содержит список выходных меток. Их порядок не важен, если маркеры являются уникальными.