BrainScript 構成ファイルの概要
CNTKを実行するには、yourExp.cntk がCNTK構成ファイルで、通常は複数のコマンド ブロックが含まれている場合と同様cntk configFile=yourExp.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
を指定します。 トレーニング アクションには、多くの場合、次の 3 つのパラメーター ブロックが関連付けられています。
- ネットワーク ビルダー ブロック。ネットワークを最初から構築する方法と、既存のモデル ファイルからモデルを読み込む方法を指定します。
- 使用するトレーニング アルゴリズムを指定する学習ブロック
- リーダー ブロック。フィーチャーとラベルを読み込む場所と方法を指定します。
この具体的な例では、BrainScriptNetworkBuilder ブロックによって示されるネットワーク ビルダーを使用してネットワークを定義し、SGD ブロックによって示される確率的勾配降下学習アルゴリズムを使用してモデルをトレーニングし、CNTKテキスト形式リーダーを使用して、CNTK テキスト形式のファイルから特徴とラベルを読み込みます。 リーダーは個別の DLL として実装され、リーダーの名前はデータを読み取るために読み込まれる DLL ファイルの名前でもあります。
最もよく使用される構成ブロックは次のとおりです。
- ネットワーク ビルダー
- SimpleNetworkBuilder - カスタマイズが制限された定義済みネットワークの 1 つを作成します。
- BrainScriptNetworkBuilder - CNTKのネットワーク記述言語 (BrainScript) を使用して定義されたネットワークを作成します。 独自のネットワーク操作と構造を設計する際に、完全な柔軟性を提供します。
- 学習
- SGD - 確率的勾配降下アルゴリズムを使用してモデルをトレーニングします。 それはほとんどの適用のための望ましいトレーナーである。
- データリーダー
- CNTKテキスト形式リーダー - テキスト ベースのCNTK形式を読み取ります。この形式では、同じファイルに複数の入力を組み合わせて使用できます。
- UCI 高速リーダー (非推奨) - ラベルと機能が 1 つのファイルに結合されたテキスト ベースの UCI 形式を読み取ります。
- HTKMLF リーダー - 音声認識アプリケーションでよく使用される HTK/MLF 形式ファイルを読み取ります。
- LM シーケンス リーダー - 単語シーケンスを予測するために、単語シーケンスを含むテキスト ベースのファイルを読み取ります。 これは、多くの場合、言語モデリングで使用されます。
- LU シーケンス リーダー - 単語シーケンスとそのラベルを含むテキスト ベースのファイルを読み取ります。 これは、多くの場合、言語の理解に使用されます。
次のサブセクションでは、CNTK構成と上記のブロックについて詳しく説明します。 上のテキストのリンクを使用して、個々のブロックにジャンプすることもできます。
参照