2

画像セットから教師なしの機能を学習する方法はありますか?ニューラルネットワークが学習され、新しい文書が与えられるword2vecまたはdoc2vecと同様に、我々はその特徴を得る。ニューラルネットワークトレーニング後の画像の特徴抽出方法は?

https://dato.com/learn/gallery/notebooks/food_retrieval-public.htmlと同様に、学習したn-modelを読み込んで新しい画像の特徴を予測できることがわかります。

cnnイメージを実装してその機能を元に戻す簡単な例がありますか?

https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py すべてのX_trainとX_testのcnn機能を取得したいのですが...何らかの方法がありますか? また、イメージごとにレイヤーごとにウェイトを取得できる場合は、それらをスタックしてフィーチャーとして使用できます。その場合、同じものを得る方法があります。 教師なしタスクにこれらの機能を使用すると、それらをベクトルとみなす方が簡単になります。

答えて

1

あなたの質問が正しく理解されていれば、この作業は深い学習の分野ではかなり一般的です。画像の場合、私は畳み込みオートエンコーダーが最善だと考えています。あなたはこのアーキテクチャについて読むことができます。バージョン1.0から、私はそれがドキュメントから消えたことに気づいたものの、ここで

http://people.idsia.ch/~ciresan/data/icann2011.pdf

Kerasの前のバージョンでは、コア層の一つとして、このアーキテクチャをサポートします。しかし、それをゼロから構築することはまだかなり容易です。

画像がない場合には、例えば次のような別のアプローチもあります。制限付きボルツマン機械。

UPDATE:

それはニューラルネットワークアクティベーションからの新機能を取得するための最良のアクティベーションの種類をしているになる - 私の個人的な経験から - それはあなたが使用してネットのサイズによって異なります。最後のレイヤーが広い(ノードが多い)ネットワークを使用すると、最後のレイヤーだけを取得すると便利です(以前のレイヤーも考慮する場合はパラメータの数が多いため、学習のパフォーマンスが低下する可能性があります)。しかし、もしあなたの最後のレイヤーがこのタスクには不十分な場合は、以前のレイヤーのアクティブ化、あるいは全てのネットのアクティビティを試みることができます。正直言って - 私はこの場合多くの改善が期待できませんが、試してみてください。前回のレイヤーからアクティベーションを追加するときに、新しいレイヤーの動作を確認しようとしています。

あなたに強くお勧めしたいのは、ネットワークがどのような機能を学習しているか、T-SNEの埋め込みを使用してどのような機能を組み込んでいるか、いくつかの洞察を得ることです。多くの場合、私はそれが有用であることを発見しました。レイヤーのサイズが十分であるかどうかをチェックします。 T-SNEを使用すると、最後の層から得られたフィーチャがクラスの優れた識別器であるかどうかを確認できます。また、あなたのデータと、ニューラルネットワークが実際に学習しているもの(驚くほどの視覚化と一緒に)についての良い洞察を与えるかもしれません。)

+0

ありがとう@Marcin ..私は論文を調べます。私が理解したかったのは、word2vecのように最後のレイヤーを削除し、隠れたレイヤーウェイトをフィーチャとして取ることでした...イメージの場合、まだ保持されているか、すべてのレイヤーからウェイトを取らなければなりませんか?そしてケラスv1.0については大きな変化があります...私は自動エンコーダも見ていません! –

+1

Cool。特定のレイヤーからのフィーチャーの重要性を理解するには、ビジュアライゼーションが良い考えです。更新された答えをありがとう。私は浅いネットワークから深いネットワークに移動しています。再度、感謝します !! –

関連する問題