BrainScript 設定檔概觀
若要執行CNTK您使用類似于 cntk configFile=yourExp.cntk
您的Exp.cntk 是CNTK組態檔的命令列,其通常包含數個命令區塊。 命令區塊是組態的最上層區塊。 每個命令區塊都必須指定要以相關資訊執行的動作。 為了說明組態和命令區塊,我們使用下列簡單範例 (從 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"
]
]
]
]
在此範例中,您可以注意到所有組態值都會指定為名稱/值組。 值可以是數值、字串、清單,甚至是組態區塊。 您可以指定變數,例如 DataDir
在此範例中,並使用標記法 $DataDir$
稍後在腳本中參考它們。
最上層組態參數 command
會決定要執行的命令區塊,以及指定多個命令區塊時執行的順序。 在此範例中 mnistTrain
,將會執行命令區塊。 此命令區塊會指定要執行的動作,在此案例中為 train
。 通常有三個與定型動作相關聯的參數區塊:
- 網路建立器區塊,指定如何從頭開始建置網路,以及如何從現有的模型檔案載入模型,
- 學習模組區塊,指定要使用的定型演算法,
- 讀取器區塊,指定載入功能和標籤的位置和方式。
在此特定範例中,BrainScriptNetworkBuilder區塊所指示的網路產生器可用來定義網路、STochastic 漸層下降學習演算法,如SGD 區塊所指示,用來定型模型,而CNTK文字格式讀取器會用來從CNTK文字格式的檔案載入特徵和標籤。 請注意,讀取器會實作為個別 DLL,而讀取器的名稱也是將載入至讀取資料的 DLL 檔案名。
最常使用的組態區塊如下:
- 網路產生器
- SimpleNetworkBuilder - 建立其中一個預先定義的網路,且自訂有限。
- BrainScriptNetworkBuilder - 建立使用 CNTK 網路描述語言 (BrainScript) 定義的網路。 它提供設計您自己的網路作業和結構的完整彈性。
- 學習
- SGD - 使用隨機漸層下降演算法來定型模型。 這是大部分應用程式所需的定型器。
- 資料讀取器
- CNTK文字格式讀取器- 讀取以文字為基礎的CNTK格式,其支援在相同檔案中結合多個輸入。
- UCI 快速讀取器 (已被取代) - 讀取以文字為基礎的 UCI 格式,其中包含一個檔案中結合的標籤和功能。
- HTKMLF 讀取器 - 讀取 HTK/MLF 格式檔案,通常用於語音辨識應用程式。
- LM 序列讀取器 - 讀取包含文字序列的文字型檔案,以預測文字序列。 這通常用於語言模型化。
- LU 序列讀取器 - 讀取包含文字序列及其標籤的文字型檔案。 這通常用於語言理解。
在下列小節中,我們將詳細說明CNTK組態和上述區塊。 您也可以使用上述文字中的連結跳至個別區塊。
另請參閱