Übersicht über die BrainScript-Konfigurationsdatei
Wenn Sie CNTK ausführen möchten, verwenden Sie eine Befehlszeile ähnlich der cntk configFile=yourExp.cntk
Position, in der IhrExp.cntk eine CNTK Konfigurationsdatei ist, die in der Regel mehrere Befehlsblöcke enthält. Ein Befehlsblock ist ein Block der obersten Ebene der Konfiguration. Jeder Befehlsblock muss angeben, welche Aktion mit verwandten Informationen ausgeführt werden soll. Um Konfigurations- und Befehlsblöcke zu veranschaulichen, verwenden wir ein einfaches Beispiel unten (aus dem MNIST-Beispiel).
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 diesem Beispiel können Sie feststellen, dass alle Konfigurationswerte als Namenswertpaar angegeben werden. Ein Wert kann eine numerische, eine Zeichenfolge, eine Liste oder sogar ein Block von Konfigurationen sein. Sie können Variablen angeben, z DataDir
. B. in diesem Beispiel, und verweisen sie später im Skript mithilfe der Notation $DataDir$
zurück.
Der Konfigurationsparameter command
der obersten Ebene bestimmt, welche Befehlsblöcke ausgeführt werden sollen und in welcher Reihenfolge sie ausgeführt werden, wenn mehrere Befehlsblöcke angegeben werden. In diesem Beispiel wird der mnistTrain
Befehlsblock ausgeführt. Dieser Befehlsblock gibt die auszuführende Aktion an, die in diesem Fall ausgeführt wird train
. Es gibt häufig drei Parameterblöcke, die der Train-Aktion zugeordnet sind:
- Ein Netzwerk-Generatorblock, der angibt, wie ein Netzwerk von Grund auf neu erstellt wird und wie ein Modell aus einer vorhandenen Modelldatei geladen wird,
- ein Lernerblock, der angibt, welchen Schulungsalgorithmus verwendet werden soll,
- ein Readerblock, der angibt, wo und wie Features und Bezeichnungen geladen werden.
In diesem spezifischen Beispiel wird der vom BrainScriptNetworkBuilder-Block angegebene Netzwerk-Generator verwendet, um das Netzwerk zu definieren, der stochastische Farbverlaufsabstiegsalgorithmus, wie durch den SGD-Block angegeben, wird verwendet, um das Modell zu trainieren, und der CNTK Textformatleser wird verwendet, um die Features und Bezeichnungen aus Dateien im CNTK Textformat zu laden. Beachten Sie, dass Leser als separate DLLs implementiert werden, und der Name des Lesers ist auch der Name der DLL-Datei, die geladen wird, um Daten zu lesen.
Die am häufigsten verwendeten Konfigurationsblöcke sind:
- Netzwerk-Generatoren
- SimpleNetworkBuilder – erstellt eines der vordefinierten Netzwerke mit eingeschränkter Anpassung.
- BrainScriptNetworkBuilder – erstellt ein Netzwerk, das mithilfe der Netzwerkbeschreibungssprache (BrainScript) CNTK definiert ist. Sie bietet volle Flexibilität beim Entwerfen eigener Netzwerkvorgänge und -struktur.
- Lernende
- SGD - verwendet den stochastischen Farbverlaufsabstiegsalgorithmus, um das Modell zu trainieren. Es ist der gewünschte Trainer für die meisten Anwendungen.
- Datenleser
- CNTK Textformatleser - liest das textbasierte CNTK-Format, das mehrere Eingaben unterstützt, die in derselben Datei kombiniert werden.
- UCI Fast Reader (veraltet) - liest das textbasierte UCI-Format, das Bezeichnungen und Features enthält, die in einer Datei kombiniert werden.
- HTKMLF Reader - liest die HTK/MLF-Formatdateien, die häufig in Spracherkennungsanwendungen verwendet werden.
- LM Sequence Reader - liest textbasierte Dateien, die Wortsequenzen enthalten, für die Vorhersage von Wortsequenzen. Dies wird häufig in der Sprachmodellierung verwendet.
- LU Sequence Reader – liest textbasierte Dateien, die Wortsequenzen und deren Bezeichnungen enthalten. Dies wird häufig für das Sprachverständnis verwendet.
In den folgenden Unterabschnitten werden CNTK Konfiguration und die obigen Blöcke ausführlich beschrieben. Sie können auch zu den einzelnen Blöcken springen, indem Sie die Links im obigen Text verwenden.
Weitere Informationen