Přehled konfiguračního souboru BrainScriptu
Ke spuštění CNTK použijete příkazový řádek podobný cntk configFile=yourExp.cntk
tomu, kde vášExp.cntk je konfigurační soubor CNTK, který obvykle obsahuje několik bloků příkazů. Blok příkazu je blok nejvyšší úrovně konfigurace. Každý blok příkazu musí určit, jaká akce se má provést se souvisejícími informacemi. K ilustraci konfigurace a bloků příkazů použijeme jednoduchý příklad níže (převzatý z příkladu 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"
]
]
]
]
V tomto příkladu si můžete všimnout, že všechny konfigurační hodnoty jsou zadané jako pár name-value. Hodnota může být číselná hodnota, řetězec, seznam nebo dokonce blok konfigurací. Můžete zadat proměnné, jako DataDir
je například v tomto příkladu, a odkazovat na ně později ve skriptu pomocí zápisu $DataDir$
.
Parametr command
konfigurace nejvyšší úrovně určuje, jaké bloky příkazů se mají spustit a v jakém pořadí se provádějí, pokud je zadáno více než jeden blok příkazu. V tomto příkladu mnistTrain
se spustí blok příkazu. Tento blok příkazu určuje akci, která se má provést, což je train
v tomto případě. K akci vlaku jsou často přidružené tři bloky parametrů:
- blok tvůrce sítě, který určuje, jak vytvořit síť od začátku a jak načíst model z existujícího souboru modelu,
- blok učení, který určuje, jaký algoritmus trénování se má použít,
- blok čtečky, který určuje, kde a jak načíst funkce a popisky.
V tomto konkrétním příkladu se k definování sítě používá tvůrce sítě označený blokem BrainScriptNetworkBuilder, k definování sítě, algoritmus učení stochastického gradientního sestupu, jak je uvedeno blokem SGD, a CNTK Čtečka formátu textu se používá k načtení funkcí a popisků ze souborů ve formátu CNTK Text. Všimněte si, že čtenáři jsou implementováni jako samostatné knihovny DLL a název čtenáře je také název souboru DLL, který se načte ke čtení dat.
Nejčastěji používané konfigurační bloky jsou:
- Tvůrci sítí
- SimpleNetworkBuilder – vytvoří jednu z předdefinovaných sítí s omezeným přizpůsobením.
- BrainScriptNetworkBuilder – vytvoří síť definovanou pomocí jazyka popisu sítě CNTK (BrainScript). Poskytuje plnou flexibilitu při navrhování vlastních síťových operací a struktury.
- Studenty
- SGD – k trénování modelu používá algoritmus stochastického gradientního sestupu. Je to požadovaný trenér pro většinu aplikací.
- Čtenáři dat
- CNTK Čtečka textového formátu – čte textový formát CNTK, který podporuje více vstupů kombinovaných ve stejném souboru.
- UCI Fast Reader (zastaralé) – čte textový formát UCI, který obsahuje popisky a funkce kombinované v jednom souboru.
- HTKMLF Reader – čte soubory formátu HTK/MLF, které se často používají v aplikacích pro rozpoznávání řeči.
- Čtečka sekvence LM – čte textové soubory obsahující sekvence slov pro predikci sekvencí slov. Často se používá při modelování jazyků.
- Lu Sequence Reader – čte textové soubory, které obsahují sekvence slov a jejich popisky. Často se používá k porozumění jazyku.
V následujících pododdílech podrobně popíšeme CNTK konfiguraci a výše uvedené bloky. Můžete také přejít na jednotlivé bloky pomocí odkazů v textu výše.
Viz také