Udostępnij za pośrednictwem


BrainScript UCI Fast Reader

Ostrzeżenie

UCIFastReader jest przestarzały i jest zastępowany przez czytnik formatu tekstu CNTK. Użyj CNTK czytnika formatów tekstu w sieciach.


UCIFastReader odczytuje dane w formacie UCI oparte na tekście, w których każdy rekord danych jest linią rozdzielanych spacjami wartości zmiennoprzecinkowych i etykiet. Informacje o etykiecie są na początku lub na końcu każdego wiersza, jeśli podano informacje o etykiecie. Aby użyć parametru UCIFastReader, należy ustawić wartość readerType na UCIFastReader w następujący sposób:

reader = [
    readerType = "UCIFastReader"
    file = "c:\cntk\data\mnist\mnist_train.txt"
    features = [
        dim = 784
        start = 1
    ]
    labels = [
        dim = 1
        start = 0
        labelDim = 10
        labelMappingFile = "c:\cntk\data\mnist\mnistlabels.txt"
    ]
]

W tym przykładzie można również zauważyć dwa pod bloki o nazwie features i labels. Te nazwy są używane przez czytniki danych do dopasowania węzła obliczeniowego w sieci i danych załadowanych z plików. Jeśli proste konstruktory sieci są używane do tworzenia sieci i featureslabels są standardowymi nazwami węzłów funkcji i etykiet odpowiednio. Jeśli sieć została zdefiniowana przy użyciu konstruktora sieci NDL, należy upewnić się, że te nazwy są zgodne z odpowiednimi węzłami w sieci. Element UCIFastReader ma następujące parametry:

  • file: plik zawierający zestaw danych. Ten parametr został przeniesiony z bloków podrzędnych funkcji i etykiet, ponieważ UCIFastReader wymaga tego samego pliku, a przeniesienie w górę poziomu gwarantuje spełnienie tego ograniczenia.

  • dim: wymiar wartości wejściowej. Należy pamiętać, że każda kolumna w pliku danych UCI reprezentuje jeden wymiar danych wejściowych.

  • start: kolumna początkowa (oparta na zerowej) danych wejściowych.

  • labelDim: liczba możliwych wartości etykiet. Ten parametr jest wymagany dla etykiet kategorii, ponieważ wymiar węzła etykiety zostanie określony przez tę wartość. Należy pamiętać, że sama wartość etykiety jest zwykle określona w jednej kolumnie w pliku danych UCI.

  • labelMappingFile: ścieżka do pliku używanego do mapowania z wartości etykiety na identyfikator etykiety liczbowej. Plik zazwyczaj zawiera listę wszystkich możliwych wartości etykiet, jeden na wiersz, który może być tekstem lub cyfrą. Numer wiersza zero jest identyfikatorem, który będzie używany przez CNTK w celu zidentyfikowania tej etykiety. Ważne jest, aby ten sam plik mapowania etykiet był używany do trenowania i oceny. Można to zrobić, przenosząc parametr labelMappingFile w górę, aby mógł być współużytkowany zarówno przez bloki trenowania, jak i oceny.

  • customDelimiter: dostosowany ogranicznik. Domyślnie spacje są używane jako ogranicznik. Za pomocą tego parametru można użyć innego ogranicznika, takiego jak przecinek lub średnik oprócz spacji. Należy jednak pamiętać, że ten czytelnik nie obsługuje pustych pól, np. dwóch przecinków z wierszem lub bez odstępów między nimi.

  • customDecimalPoint: dostosowany punkt dziesiętny. Domyślnie kropka jest używana jako punkt dziesiętny. Za pomocą tego parametru można użyć innego punktu dziesiętnego, takiego jak te używane w krajach europejskich.

  • labelType: aby wskazać, jak powinny być interpretowane kolumny etykiet. Domyślnie jest ustawiona wartość "Kategoria", co oznacza, że wymaga ona mapowania tabeli mapowania z wartości (może być ciągiem) na identyfikatory klas, aby wartości zostały przekonwertowane na reprezentację gorącą 1. Można ustawić wartość "Regresja", aby wskazać, że wartości są używane bezpośrednio bez żadnej konwersji lub "Brak", aby wskazać, że nie są używane żadne etykiety.

Inne opcje:

  • traceLevel: liczba całkowita, która definiuje szczegółowość czytnika. Obecnie używane: 0 (bez śledzenia) i 1. Wartość domyślna to 0.
  • prefetch: wartość logiczna ("true" lub "false") wskazująca, czy należy włączyć wstępne pobieranie. Wstępne pobieranie odnosi się do faktu, że dane są odczytywane asynchronicznie do głównego przetwarzania. Wartość domyślna to false.
  • randomize: ciąg ("none", "auto") kontrolujący kolejność odczytywania wierszy. W przypadku "Brak" są odczytywane w kolejności liniowej; W przypadku "auto" są wybierane losowo; TODO może być również liczbą całkowitą pod pewnymi ograniczeniami.
  • minibatchMode: Jeśli podane i ustawione na "częściowe", akceptowane są częściowe minibats; W przeciwnym razie rozmiar danych treningowych musi być wielokrotnym rozmiarem minibatch.