CNTK使用状況の概要
CNTKを使用するには、実行可能バイナリをダウンロードするか、ソース コードをダウンロードしてコンピューター上でコンパイルする必要があります (詳細)。 CNTKでサポートされる主なタスク (またはアクション) は 3 つあります。
- トレーニング - ネットワークを定義し、トレーニング データを使用してトレーニング済みのモデルを生成するようにトレーニングする
- 評価 - トレーニング済みのモデルをテストし、テスト データを使用してそのパフォーマンスを評価する
- デプロイ - トレーニング済みのモデル (独自のソリューションなど) を使用して新しいインスタンスを分類する
これらの各タスクの簡単な概要を以下に示し、より詳細な説明へのポインターを示します。 また、既存のモデルの編集やノード出力のファイルへの書き込みなど、CNTKサポートされる他のタスクもあります。 これらの説明は、[ 最上位のコマンド ] ページの [高度なトピック] セクションで説明します。
CNTKを使用してモデルをトレーニングする
CNTKを使用してニューラル ネットワークをトレーニングするには、次の 3 つのコンポーネントを構成する必要があります。
- 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は利用可能な最適なデバイスを選択します。 CPU を使用するように -1
設定するか、特定の GPU を使用する場合は値 >=0 に設定します。 中間 modelPath
トレーニングモデルと最終トレーニング済みモデルを格納する場所を定義します。 この例では、構成ファイルの ModelDir
先頭に定義されている変数を使用します。
トレーニング用の 3 つの主要な構成ブロックは、ネットワーク自体と、トレーニング アルゴリズムとデータ リーダーのパラメーターを定義します。
- ネットワーク ビルダー - ここでは、トポロジとネットワークの詳細 (レイヤーのサイズと数、ノードの種類など) を定義します。 標準モデルには Simple Network Builder を、カスタム モデルには BrainScript ネットワーク ビルダー を使用できます。 詳細については、対応するページを参照してください。
- SGD - このブロックを使用すると、トレーニング アルゴリズム (確率的勾配降下) をパラメーター化できます。 構成可能なオプションには、モメンタム、アダプティブラーニングレート、アダプティブミニバッチサイズ、並列トレーニングなどがあります。 詳細については 、SGD ブロック を参照してください。
- reader - リーダー ブロックは、使用するリーダーと、対応する入力ファイルの場所を定義します。 CNTKは、さまざまな形式とタスクに対して複数のデータ リーダーを提供します (リーダー ブロックを参照)。
最後に、定義されたタスクのうち実行するタスクを指定します command = MNISTtrain
。 トレーニングや評価など、複数のタスクを連続して実行するには、コロン command = "MNISTtrain:MNISTtest"
で区切られたコマンドにタスクを追加するだけです。
トレーニング済みモデルの評価
トレーニング済みのモデルの精度を評価するには、or test
コマンドをeval
使用します (詳細については、「トレーニング、テスト、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
ブロック内MNISTtest
ではなく最上位レベルで定義され (上のトレーニング 部分を参照)、アクションとtest
アクションのtrain
両方で使用されます。 この例では、 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 を使用した評価など、多くの詳細があります。
次の手順