Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby uruchomić CNTK należy użyć wiersza polecenia podobnego do cntk configFile=yourExp.cntk tego, gdzie yourExp.cntk jest plikiem konfiguracji CNTK, który zazwyczaj zawiera kilka bloków poleceń. Blok poleceń jest blokiem najwyższego poziomu konfiguracji. Każdy blok poleceń musi określać, jaką akcję należy wykonać z powiązanymi informacjami. Aby zilustrować bloki konfiguracji i poleceń, użyjemy prostego przykładu poniżej (pobranego z przykładu MNIST).
rootDir = ".." # often, this is overwritten on the command line
configDir = "$rootDir$/Config"
dataDir = "$rootDir$/Data"
outputDir = "$rootDir$/Output"
modelDir = "$outputDir$/Models"
command = mnistTrain
mnistTrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# SGD learner configuration
SGD = [
modelPath = "$ModelDir$/01_OneHidden_Model.dnn"
epochSize = 60000
minibatchSize = 32
learningRatesPerMB = 0.1
maxEpochs = 30
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
input = [
features = [
dim = 784
format = "dense"
]
labels = [
dim = 10
format = "dense"
]
]
]
]
W tym przykładzie można zauważyć, że wszystkie wartości konfiguracji są określane jako para nazwa-wartość. Wartość może być wartością liczbową, ciągiem, listą, a nawet blokiem konfiguracji. Możesz określić zmienne, takie jak DataDir w tym przykładzie, i odwołać się do nich w dalszej części skryptu, używając notacji $DataDir$.
Parametr command konfiguracji najwyższego poziomu określa, jakie bloki poleceń mają być wykonywane i w jakiej kolejności są wykonywane, jeśli określono więcej niż jeden blok poleceń. W tym przykładzie mnistTrain zostanie wykonany blok poleceń. Ten blok poleceń określa akcję do wykonania, która jest train w tym przypadku. Często istnieją trzy bloki parametrów skojarzone z akcją pociągu:
- blok konstruktora sieci, który określa, jak utworzyć sieć od podstaw i jak załadować model z istniejącego pliku modelu,
- blok ucznia, który określa, jakiego algorytmu trenowania użyć,
- blok czytnika, który określa, gdzie i jak ładować funkcje i etykiety.
W tym konkretnym przykładzie konstruktor sieci wskazany przez blok BrainScriptNetworkBuilder służy do definiowania sieci, stochastycznego algorytmu uczenia spadku gradientu wskazanego przez blok SGD jest używany do trenowania modelu, a czytnik formatu tekstu CNTK służy do ładowania funkcji i etykiet z plików w formacie CNTK Text. Należy pamiętać, że czytniki są implementowane jako oddzielne biblioteki DLL, a nazwa czytnika jest również nazwą pliku DLL, który zostanie załadowany do odczytu danych.
Najczęściej używane bloki konfiguracji to:
- Konstruktorzy sieci
- SimpleNetworkBuilder — tworzy jedną ze wstępnie zdefiniowanych sieci z ograniczonym dostosowaniem.
- BrainScriptNetworkBuilder — tworzy sieć zdefiniowaną przy użyciu języka opisu sieci CNTK (BrainScript). Zapewnia pełną elastyczność projektowania własnych operacji i struktury sieci.
- Uczniów
- SGD — używa algorytmu spadku gradientu stochastycznego do trenowania modelu. Jest to pożądany trener dla większości aplikacji.
- Czytelnicy danych
- CNTK Czytnik formatów tekstu — odczytuje format CNTK oparty na tekście, który obsługuje wiele danych wejściowych połączonych w tym samym pliku.
- UCI Fast Reader (przestarzały) — odczytuje tekstowy format UCI, który zawiera etykiety i funkcje połączone w jednym pliku.
- Czytnik HTKMLF — odczytuje pliki formatu HTK/MLF, często używane w aplikacjach rozpoznawania mowy.
- Czytnik sekwencji LM — odczytuje pliki tekstowe zawierające sekwencje wyrazów w celu przewidywania sekwencji słów. Jest to często używane w modelowaniu języka.
- Czytelnik sekwencji LU — odczytuje pliki tekstowe zawierające sekwencje wyrazów i ich etykiety. Jest to często używane do zrozumienia języka.
W poniższych podsekcjach szczegółowo opiszemy konfigurację CNTK i powyższe bloki. Możesz również przejść do poszczególnych bloków przy użyciu linków w powyższym tekście.
Zobacz też