Panoramica del file di configurazione di BrainScript
Per eseguire CNTK si usa una riga di comando simile alla cntk configFile=yourExp.cntk
posizione in cui yourExp.cntk è un file di configurazione CNTK, che in genere contiene diversi blocchi di comando. Un blocco di comandi è un blocco di livello superiore della configurazione. Ogni blocco di comandi deve specificare l'azione da eseguire con le informazioni correlate. Per illustrare i blocchi di configurazione e comando, viene usato un semplice esempio seguente (tratto dall'esempio 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"
]
]
]
]
In questo esempio è possibile notare che tutti i valori di configurazione vengono specificati come coppia nome-valore. Un valore può essere un valore numerico, una stringa, un elenco o anche un blocco di configurazioni. È possibile specificare le variabili, ad esempio DataDir
in questo esempio, e fare riferimento a esse più avanti nello script usando la notazione $DataDir$
.
Il parametro command
di configurazione di primo livello determina quali blocchi di comando devono essere eseguiti e nell'ordine in cui vengono eseguiti se viene specificato più blocchi di comando. In questo esempio verrà eseguito il mnistTrain
blocco di comandi. Questo blocco di comandi specifica l'azione da eseguire, ovvero train
in questo caso. Esistono spesso tre blocchi di parametri associati all'azione di training:
- un blocco di generatore di rete, che specifica come creare una rete da zero e come caricare un modello da un file di modello esistente,
- un blocco di learner, che specifica l'algoritmo di training da usare,
- un blocco lettore, che specifica dove e come caricare funzionalità e etichette.
In questo esempio specifico, il generatore di rete indicato dal blocco BrainScriptNetworkBuilder viene usato per definire la rete, l'algoritmo di apprendimento della discesa della sfumatura stochastica come indicato dal blocco SGD viene usato per eseguire il training del modello e il lettore formato testo CNTK viene usato per caricare le funzionalità e le etichette dai file in formato CNTK testo. Si noti che i lettori vengono implementati come DLL separati e il nome del lettore è anche il nome del file DLL che verrà caricato per leggere i dati.
I blocchi di configurazione usati più di frequente sono:
- Generatori di rete
- SimpleNetworkBuilder : crea una delle reti predefinite con personalizzazione limitata.
- BrainScriptNetworkBuilder: crea una rete definita usando il linguaggio di descrizione della rete di CNTK (BrainScript). Offre una flessibilità completa nella progettazione di operazioni e strutture di rete personalizzate.
- Studenti
- SGD : usa l'algoritmo di discesa delle sfumature stochastic per eseguire il training del modello. È il formatore desiderato per la maggior parte delle applicazioni.
- Lettori di dati
- CNTK Lettore formato testo: legge il formato di CNTK basato sul testo, che supporta più input combinati nello stesso file.
- UCI Fast Reader (deprecato): legge il formato UCI basato sul testo, che contiene etichette e funzionalità combinate in un file.
- Lettore HTKMLF : legge i file di formato HTK/MLF, spesso usati nelle applicazioni di riconoscimento vocale.
- Lettore sequenza LM : legge i file basati su testo che contengono sequenze di parole, per stimare le sequenze di parole. Questa operazione viene spesso usata nella modellazione del linguaggio.
- Lettura sequenza LU : legge i file basati su testo che contengono sequenze di parole e le relative etichette. Questa operazione viene spesso usata per la comprensione del linguaggio.
Nelle sottosezioni seguenti verranno descritte CNTK configurazione e i blocchi precedenti in dettaglio. È anche possibile passare ai singoli blocchi usando i collegamenti nel testo precedente.
Vedere anche