2016-05-19 5 views
0

最近、Deeplearning for Java(DL4J)をダウンロードして、畳み込みネットで少し実験しています。私はホームページやインターネット上でいくつかの作業サンプルを見つけました。例えば画像をどのように分類するか、つまり顔を認識する方法です。私はおおまかに訓練データがどのように読み取られ、画像がネットが認識すべき正しいラベル( "Barack Obama - Picture 1")でラベル付けされているかを理解しています。しかし、ここから私はちょっと立ち往生しています。私は出力を理解できません。 http://deeplearning4j.org/image-data-pipelineに記載されているように、ImageRecordReaderを使用してイメージを読み込んで、そこからトレーニングデータを作成します。しかし、そのプログラムは、例えば、「バラクオバマ - サンプル画像1」ではなく、「バラクオバマ」として1つの画像を分類することをどのようにして知っていますか?それともネットがそうしていますか?私はそうは思わない。 私の次の問題は、オブジェクトを認識するだけでなく、画像として表現されるボードの位置を評価するAlphaGoのような画像をエバクトするようにアプリケーションを変更することです。どのようにデータを入力すればよいですか?私は、例えばトレーニングボードの状態にスコアを付けてラベルを付けることができます...しかし、それが良いかどうかはわかりません。 これはわかりやすく助けられ、最小限のサンプルが大歓迎されたと思います!DL4Jを使用してAlphaGoのような画像を評価する

おかげで、良い一日持って オリバー

答えて

0

はあなたが引用例には、以下のフォルダ構造を持つワイルドデータセット、中標識顔使用しています:

lfw 
├── Aaron_Eckhart 
├── Aaron_Guiel 
├── Aaron_Patterson 
│ ├── Aaron_Patterson_0001.jpg 

ImageRecordReaderクラスが拡張します抽象BaseImageRecordReaderクラスのinitialize()メソッドでは、次の行(131〜134)を使用してラベル配列を作成します。

File parentDir = imgFile.getParentFile(); 
String name = parentDir.getName(); 
if(!labels.contains(name)) 
    labels.add(name); 

つまり、JPEGファイルの名前ではなく、親フォルダの名前を使用します。

あなたの2番目の質問については:

私の次の問題は、その後、単に画像として表現ボードの位置を評価する種類のAlphaGoのように、画像をevaulateするが、オブジェクトを認識しないようにアプリケーションを変更することです。 [..]練習ボードの状態にスコアを付けてラベルを付けることもできますが、それがうまくいくかどうかはわかりません。

私は以下の論文を読んで始まることをお勧め:http://www.nature.com/nature/journal/v529/n7587/fig_tab/nature16961_F1.html、および以下の概要 :https://www.tastehit.com/blog/google-deepmind-alphago-how-it-works/(特にAlphaGoセクションから開始します)。

AlphaGoは、ツリー検索手順と、ツリー検索手順を導く畳み込みネットワークの2つの異なるコンポーネントに依存しています。 [..]総計で、3つの畳み込みネットワーク、すなわち2つの異なる種類のネットワーク、すなわち2つのポリシーネットワークと1つの値ネットワークが訓練される。両方のタイプのネットワークは、画像として表される現在のゲーム状態を入力として取ります。

[..]

バリュー・ネットワークは、ゲームの現在の状態の値の推定値を提供します。最終的にゲームに勝つために黒のプレーヤーの確率は、現在の状態を考えると、何ですか?バリューネットワークへの入力はゲームボード全体であり、出力は勝つ確率を表す単一の数字です。

ポリシーネットワークは、ゲームの現在の状態を考慮して、選択するアクションに関するガイダンスを提供します。出力は、各可能な合法的移動の確率値である(すなわち、ネットワークの出力はボードと同じ大きさである)。確率値が高いアクション(移動)は、勝利につながる可能性の高いアクションに対応します。

関連する問題