0

事前に訓練されたモデルからバイナリクラシファイアを訓練したいと思ったら、否定的な訓練セットを定義する方法を知りたいのですが、AlexNet on ILSVRC12またはImageNet)データセット。私が現在考えているのは、否定的な訓練セットとして関連していないクラスと、肯定的なものとして関連するクラスを取ることです。もっとエレガントな方法がありますか?バイナリ分類のベンチマークデータセットで負の例を表現するCaffeの方法

答えて

1

ILSVRCデータセットで訓練されたCNNは、すでに1000種類の画像を区別しています。はい、これらのトポロジの1つを使用してバイナリクラシファイアをトレーニングすることができますが、訓練を受けていないモデルから始め、2つの選択されたクラスを通して実行することをお勧めします。訓練を受けたモデルから始める場合は、にはの情報がありません。その結果、まだ1000のクラスを区別しようとしています。最後のFCレイヤーで問題が起こります。

1000クラスの問題を回避する方法があります。アプリケーションが既に訓練されたクラスの1つ以上と重なっている場合は、それらのクラスをラベル「1」にマップするレイヤーを追加し、その他すべてを「0」とラベル付けします。

訓練を受けたカーネルを保持している場合は、最終FCレイヤ(1000)を2クラスFCレイヤに置き換えてみてください。次に、2つのクラス(該当する画像とそれ以外のもの)を選択し、トレーニングを実行します。

+0

洞察をいただきありがとうございます。しかし、第2段落で言及したものが第3と同じであることを意味しますか?そうであれば、あなたが意味していることを示すスニペットを持っていますか?それらのクラスをマップするレイヤーをラベル「1」に追加し、その他すべてを「0」とラベル付けします。 –

+0

FCレイヤーで1000から2に変更して自分のデータを訓練することで3番目のパラグラフで述べたことをやりましたが、予測精度はかなり低く、つまり約55%です。私はあなたが言及したことに興味があります "単に、ラベル" 1 "にそれらのクラスをマップするレイヤーを追加し、" 0 "とラベル付けするために他のすべてのクラス"、prototxtレベルでこれをどのように実装しますか? –

+0

そして、私のアプリケーションは電車のクラスの一つと重なっています。 –

関連する問題