CNTK使用量概觀
若要使用CNTK您必須下載可執行檔二進位檔或下載原始程式碼,並在您的電腦上編譯 (詳細資料) 。 CNTK支援三個主要工作 (或動作) :
- 定 型 - 定義網路,並將其定型,以使用定型資料產生定型的模型
- 評估 - 測試定型的模型,以使用測試資料評估其效能
- 部署 - 使用定型的模型,例如在您自己的解決方案中分類新的實例
以下提供這些工作的簡短概觀,並提供更詳細的描述指標。 此外,還有其他工作CNTK支援,例如編輯現有的模型,以及將節點輸出寫入檔案。 最 上層命令 頁面上的 [進階主題] 區段中會提供這些描述。
使用 CNTK 定型模型
使用CNTK定型神經網路牽涉到必須設定的三個元件:
- network:類神經網路,包括其結構/公式、模型參數。 此處也包含訓練準則和評估計量。
- 讀取者:如何讀取定型資料
- SGD:隨機漸層進程的超參數
呼叫 CNTK 可執行檔時,您必須透過組態檔提供這項資訊作為第一個引數。 組態檔會使用特定語法。 如需設定檔的詳細資訊,請參閱設定檔概 觀 。
在下列程式中,我們使用 MNIST 範例中的CNTK組態和結果,特別是組態 '01_OneHidden_ndl_deprecated.cntk' (請參閱Image/GettingStarted和01_OneHidden.cntk以取得完整詳細資料) 。
此範例CNTK命令列為 cntk configFile=01_OneHidden_ndl_deprecated.cntk
。 下列程式碼片段提供與定型相關的組態檔內容概觀。
modelDir = "$OutputDir$/Models"
deviceId = 0
command = MNISTtrain
modelPath = "$modelDir$/01_OneHidden"
MNISTtrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# learner configuration
SGD = [
...
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
...
]
]
上述程式碼片段會使用 定義名為 的 MNISTtrain
action = "train"
命令。 其他支援的動作例如 test
或 write
。 參數 deviceId
會指定是否要使用 CPU 或 GPU。 當設定為 "auto"
時,CNTK會挑選最佳的可用裝置。 將它設定為 -1
以使用 CPU 或值 > =0 以使用特定 GPU。 會 modelPath
定義儲存中繼和最終定型模型的位置。 在此範例中, ModelDir
它會使用組態檔開頭定義的變數。
定型的三個主要組態區塊會定義網路本身,以及定型演算法和資料讀取器的參數。
- 網路產生器 - 您可以在這裡定義拓撲和網路的詳細資料,例如層級大小和數目,以及節點類型。 您可以針對標準模型使用 Simple Network Builder ,或針對自訂模型使用 BrainScript 網路產生器 。 如需詳細資訊,請參閱對應的頁面。
- SGD - 此區塊可讓您將定型演算法參數化 (隨機梯度下降) 。 可設定的選項包括動態、調適型學習率、調適型迷你批次大小、平行定型。 如需詳細資訊,請參閱 SGD 區塊 。
- reader - 讀取器區塊會定義要使用的讀取器,以及對應的輸入檔位於何處。 CNTK針對不同的格式和工作提供數個數據讀取器, (請參閱讀取器區塊) 。
最後,行 command = MNISTtrain
會指定要執行哪些已定義的工作。 若要連續執行數個工作,例如定型和評估,只需將更多工作新增至以冒號分隔的命令: command = "MNISTtrain:MNISTtest"
。
評估定型的模型
若要評估定型模型的精確度,請使用 eval
或 test
命令 (另請參閱 定型、測試、Eval 以取得完整詳細資料) 。 MNIST 01_OneHidden.cntk 範例中的對應組態如下所示。
testNetwork = {
action = "test"
minibatchSize = 1024 # reduce this if you run out of memory
reader = {
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Test-28x28_cntk_text.txt"
input = {
features = { dim = 784 ; format = "dense" }
labels = { dim = 10 ; format = "dense" }
}
}
}
區塊 MNISTtest
使用 action = "test"
。 test
針對動作,您必須定義應該用於使用 參數進行測試的 modelPath
模型。 在此範例中, modelPath
未定義于 區塊內,但在最上層 (看到上方的訓練部分) ,且 由 和 test
動作使用 train
。 MNISTtest
在 reader
區塊內,您會在範例中指定應該用於測試 Test-28x28.txt
的資料檔案。 最後,您必須設定 command = MNISTtest
並執行 cntk configFile=01_OneHidden_ndl_deprecated.cntk
以執行測試。 命令列上的結果如下:
Final Results: Minibatch[1-625]: errs = 2.39% * 10000; ce = 0.076812531 * 10000; Perplexity = 1.0798396
COMPLETED!
在您自己的程式碼中使用定型的模型
定型模型之後,您需要功能來評估目標環境中的模型。 CNTK提供多種方式,以在不同案例中為您的模型提供服務。 您可以使用 C++、Python、C# 或其他 .NET 語言的定型模型。 您可以在您的電腦或 Azure 中執行評估。 評估CNTK模型一節 (請參閱提要欄位) 有許多詳細資料,包括使用 C++/Python/C#/Azure 進行評估。
後續步驟