Udostępnij przez


Czytnik sekwencji LU w języku BrainScript

Uwaga: jeśli jesteś nowym użytkownikiem, rozważ użycie CNTK czytnika formatów tekstu. W przyszłości element LUSequenceReader zostanie wycofany i ostatecznie nie będzie obsługiwany.

LUSequenceReader jest podobny do LMSequenceReader. Jest on jednak używany do zadań interpretacji języka, które mają ciągi wejściowe i wyjściowe, które są różne. Przykład konfigurowania elementu LUSequenceReader jest następujący

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"
    ]
]

Element LUSequenceReader ma następujące parametry:

  • wordContext: określa okno kontekstu. Na przykład wordContext=0:1:2 określa okno kontekstu 3. W tym oknie kontekstowym odczytuje dane wejściowe w bieżącym czasie, następnym razem i po następnym czasie. Innym przykładem może być wordContext=0:-1. W takim przypadku LUSequencReader odczytuje okno kontekstu 2, które składa się z bieżących danych wejściowych i natychmiastowego ostatniego wejścia.

  • randomize: jest to wartość None lub Auto. Określa tryb wykonywania losowych zdań całego korpusu.

  • nbrUttsInEachRecurrentIter: określa limit liczby zdań w minibatch. Czytelnik rozmieszcza zdania wejściowe o tej samej długości, do określonego limitu, do każdego minibatcha. W przypadku cyklicznych sieci trener resetuje ukryte działania warstwowe tylko na początku zdań. Działania ukrytych warstw są przenoszone do następnej minibatch, jeśli nie zostanie osiągnięty koniec zdania. Używanie wielu zdań w minibatch może przyspieszyć procesy trenowania.

  • unk: określa symbol do reprezentowania nieużytowanych symboli wejściowych. Zazwyczaj ten symbol to "".

  • wordMap: określa plik, który mapuje dane wejściowe na inne dane wejściowe. Jest to przydatne, jeśli użytkownik chce zamapować niektóre dane wejściowe na nieznane symbole. Przykład pliku mapowania wyrazów jest następujący:

    buy buy

    trans <unk>

  • file: plik zawiera dane wejściowe i jego etykiety. Ostatnia kolumna to etykieta, a pozostałe kolumny zawierają dane wejściowe. Poniżej znajduje się przykład pliku szkoleniowego.

    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

W powyższym przykładzie można również zauważyć dwa pod bloki o nazwie labelIn i labels.

  • labelIn: sekcja etykiety wejściowej. Zawiera on następujące konfiguracje

    • useWordMaptrue lub false, określa, czy za pomocą mapy wyrazów mapować wyrazy wejściowe na inne słowa wejściowe.
    • beginSequence – symbol początkowy zdania
    • endSequence – symbol końcowy zdania
    • token — plik tokenu zawiera listę słów wejściowych. Ich zamówienia nie są ważne.
  • labels: sekcja etykiety wyjściowej.

    • token — plik tokenu zawiera listę etykiet wyjściowych. Ich kolejność nie jest ważna, o ile tokeny są unikatowe.