Sdílet prostřednictvím


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é