共用方式為


CNTK使用量概觀

若要使用CNTK您必須下載可執行檔二進位檔或下載原始程式碼,並在您的電腦上編譯 (詳細資料) 。 CNTK支援三個主要工作 (或動作) :

  • 型 - 定義網路,並將其定型,以使用定型資料產生定型的模型
  • 評估 - 測試定型的模型,以使用測試資料評估其效能
  • 部署 - 使用定型的模型,例如在您自己的解決方案中分類新的實例

以下提供這些工作的簡短概觀,並提供更詳細的描述指標。 此外,還有其他工作CNTK支援,例如編輯現有的模型,以及將節點輸出寫入檔案。 最 上層命令 頁面上的 [進階主題] 區段中會提供這些描述。

使用 CNTK 定型模型

使用CNTK定型神經網路牽涉到必須設定的三個元件:

  • network:類神經網路,包括其結構/公式、模型參數。 此處也包含訓練準則和評估計量。
  • 讀取者:如何讀取定型資料
  • SGD:隨機漸層進程的超參數

呼叫 CNTK 可執行檔時,您必須透過組態檔提供這項資訊作為第一個引數。 組態檔會使用特定語法。 如需設定檔的詳細資訊,請參閱設定檔概

在下列程式中,我們使用 MNIST 範例中的CNTK組態和結果,特別是組態 '01_OneHidden_ndl_deprecated.cntk' (請參閱Image/GettingStarted01_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"
        ...
    ]    
]

上述程式碼片段會使用 定義名為 的 MNISTtrainaction = "train" 命令。 其他支援的動作例如 testwrite 。 參數 deviceId 會指定是否要使用 CPU 或 GPU。 當設定為 "auto" 時,CNTK會挑選最佳的可用裝置。 將它設定為 -1 以使用 CPU 或值 > =0 以使用特定 GPU。 會 modelPath 定義儲存中繼和最終定型模型的位置。 在此範例中, ModelDir 它會使用組態檔開頭定義的變數。

定型的三個主要組態區塊會定義網路本身,以及定型演算法和資料讀取器的參數。

  • 網路產生器 - 您可以在這裡定義拓撲和網路的詳細資料,例如層級大小和數目,以及節點類型。 您可以針對標準模型使用 Simple Network Builder ,或針對自訂模型使用 BrainScript 網路產生器 。 如需詳細資訊,請參閱對應的頁面。
  • SGD - 此區塊可讓您將定型演算法參數化 (隨機梯度下降) 。 可設定的選項包括動態、調適型學習率、調適型迷你批次大小、平行定型。 如需詳細資訊,請參閱 SGD 區塊
  • reader - 讀取器區塊會定義要使用的讀取器,以及對應的輸入檔位於何處。 CNTK針對不同的格式和工作提供數個數據讀取器, (請參閱讀取器區塊) 。

最後,行 command = MNISTtrain 會指定要執行哪些已定義的工作。 若要連續執行數個工作,例如定型和評估,只需將更多工作新增至以冒號分隔的命令: command = "MNISTtrain:MNISTtest"

評估定型的模型

若要評估定型模型的精確度,請使用 evaltest 命令 (另請參閱 定型、測試、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 動作使用 trainMNISTtestreader 區塊內,您會在範例中指定應該用於測試 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 進行評估。

後續步驟