"FeatureExtractor" (ネットエンコーダ)
NetEncoder[{"FeatureExtractor",f}]
入力を符号化するためにFeatureExtractorFunction f を使うエンコーダを表す.
NetEncoder["FeatureExtractor"]
ネット訓練の間に自動的に学習されるエンコーダを表す.
NetEncoder[{"FeatureExtractor","method"}]
指定の特徴抽出法を使う.
詳細
- NetEncoder[{"FeatureExtractor",f}]では,FeatureExtractorFunction f は数値ベクトルを返す.
- NetEncoder["FeatureExtractor"]では, hen NetTrainがエンコーダを含むネット上で呼び出されたとき,抽出器が訓練データ上で学習される.学習された抽出器は通常数値ベクトルを返す.
- NetEncoder[{"FeatureExtractor","method"}]で,"method"は数値ベクトルを生み出すFeatureExtractionの特徴検出器法であれば何でもよい.例えば,"StandardizedVector","IndicatorVector","TFIDF","ImageFeatures","AudioFeatures","GraphFeatures"等がある.
- NetEncoder[…][input]はエンコーダを入力に適用し,出力を作る.
- NetEncoder[…][{input1,input2,…}]はエンコーダを入力のリストに適用し,出力のリストを作る.
- ネットワークの構築時に"port"NetEncoder[…]と指定すると,エンコーダをネットワークの入力ポートに付加することができる.
例題
例 (2)
データで自動学習する特徴抽出器を持つネットワークを定義する:
net = NetChain[{LinearLayer[], SoftmaxLayer[]}, "Output" -> NetDecoder[{"Class", {"cat", "dog"}}], "Input" -> NetEncoder["FeatureExtractor"]]trained = NetTrain[net, {[image] -> "cat", [image] -> "cat", [image] -> "cat" , [image] -> "dog", [image] -> "dog"}]trained[[image]]data = NumericArray[RandomVariate[NormalDistribution[1, 2], {1024, 3}], "Real32"]このデータを標準化するFeatureExtractorFunctionを訓練する:
fe = FeatureExtraction[data, "StandardizedVector"]enc = NetEncoder[{"FeatureExtractor", fe}]enc[{1, 0, -1}]FeatureExtractorFunctionと同じ結果になる:
fe[{1, 0, -1}]同様のNetEncoderがNetTrainを使っても得られる:
enc2 = NetEncoder[{"FeatureExtractor", "StandardizedVector"}]enc3 = NetTrain[enc2, data]エンコーダはネットワークに付加して,最初のフェーズで訓練することもできる:
net = NetChain[{LinearLayer["Real"], LogisticSigmoid}, "Input" -> enc2]trained = NetTrain[net, data, LossFunction -> "Output", MaxTrainingRounds -> 10]enc4 = NetExtract[trained, "Input"]enc4[{1, 0, -1}]