入力{}
リーダーによって供給される入力を定義します。
Input (shape, sparse=false, dynamicAxis=DefaultAxis, tag='feature')
パラメーター
shape
: スカラー (入力がベクトルの場合) またはテンソル図形 (入力が多次元の場合)。40
たとえば、40 次元の特徴の場合や(640:480:3)
、VGA サイズのカラー 画像の場合などです。sparse
(既定値: false): true の場合、入力はスパース マトリックスとして格納されますdynamicAxis
(既定値: なし): この入力で使用される代替動的軸
戻り値
同じ名前のストリームから値を reader
受け取る変数。
###Description
Input{}
は、リーダーから読み取られた入力を表す変数を宣言します。
入力はセクションの最も外側の BrainScriptNetworkBuilder
レベルで宣言する必要があり、セクションは reader
同じ名前のストリームを定義する必要があります。
####Sparse 入力データ
オプションは sparse=true
、入力データをスパース ベクターとして表す必要があることを宣言します。
これは、一般的に、1 ホット ベクトルで表されるカテゴリ データ (単語など) を読み取る場合に使用されます。
スパース入力には、次の 2 つの一般的な用途があります。
- 埋め込まれる入力。そして
- ラベル。
埋め込みは、単語 (またはその他のカテゴリ項目) の数値 ID でインデックスが付いた高密度の連続値ベクトルのコレクションです。
CNTK では、このインデックス演算は、単語の 1 ホット表現を持つ行列乗算として表されます。
たとえば、ディクショナリ内の 2 番目の単語は列ベクトル w = (0, 1, 0, 0, ..., 0)^T
で表され、行列積 E * w
は行列 E
の 2 番目の列を取得するのと同じです。ここで、 の E
列は埋め込みベクトルです。
正式には、この行列積は多くのゼロで乗算されますが、 がスパース形式で表される場合 w
、この操作は実際にはインデックス作成操作に相当するため、これは安価です。
ランク>1 の入力データはスパース形式で表すことができないことに注意してください。
スパース ラベル
スパース入力と同様に、単語またはその他のカテゴリ ラベルはスパース形式で表すことができます。
ただし、スパース ラベルは現在、 の直接形式ではサポートされていないことに CrossEntropyWithSoftmax()
注意してください。
代わりに、ここに示すように、手動で記述されたフォームを使用する必要があります
ランク>1 のラベル データはスパース形式で表すことができないことに注意してください。
画像入力
画像は、幅W
、高さH
、およびカラー チャネルC
の数 (RGB の場合は 3、B&W の場合は 1) のテンソル次元[W x H x C]
のランク 3 テンソルとして読み取られます。
可変長シーケンス
入力には、個々のサンプル (画像など) またはサンプルのシーケンス (文など) のいずれかを指定できます。 CNTK の場合、これらは同じです (個々のサンプルは長さ 1 のシーケンスです)。 入力が個々のサンプルまたはシーケンスを受け取るかどうかは、特定の入力データとリーダーにかかっています。
例
40 次元音声特徴ベクトル
features = Input{40}
10 個の左および 10 個の右近隣フレームを含むウィンドウ全体を読み取る場合:
features = Input{(40:21)}
Wordシーケンス、ボキャブラリ サイズ 33124
words = Input{33124, sparse=true}
(CTF ファイルから読み取るために) 対応するリーダー定義を使用します。
reader = {
readerType = "CNTKTextFormatReader"
file = "my_text_corpus.ctf"
randomize = true
input = { words = { alias = "w" ; dim = 33124 ; format = "sparse" }}
}
CIFAR-10 イメージ
images = Input{(32:32:3)}
labels = Input{10}
対応するリーダー定義:
reader = {
verbosity = 0 ; randomize = true
deserializers = ({
type = "ImageDeserializer" ; module = "ImageReader"
file = "$dataDir$/cifar-10-batches-py/train_map.txt"
input = {
images = { transforms = (
{ type = "Crop" ; cropType = "RandomSide" ; sideRatio = 0.8 ; jitterType = "UniRatio" } :
{ type = "Scale" ; width = 32 ; height = 32 ; channels = 3 ; interpolations = "linear" } :
{ type = "Transpose" }
)}
labels = { labelDim = 10 }
}
})
}